在该脚本中使用相对于 SQL 脚本位置的路径?
Posted
技术标签:
【中文标题】在该脚本中使用相对于 SQL 脚本位置的路径?【英文标题】:Using path relative to SQL script location in that script? 【发布时间】:2017-03-02 11:04:15 【问题描述】:我有一个 sql 脚本
dir:\some\path\script.sql
这个脚本是通过SqlDeveloper和spool
s执行一些数据到
dir:\some\path\data\tablename.csv
现在,我必须将脚本存储在 .sql 文件中,因为如果我直接从 SqlDeveloper 执行它,spool
会将查询本身写入我不想要的文件中。
但我也不想对路径进行硬编码,因为我团队中的每个人都有他们想要的 GIT 存储库,所以我想要实现的场景是我的 sql 脚本使用来自其位置的相对路径来编写csv 文件。
目前 script.sql 看起来像这样:
SET COLSEP ";"
spool dir:\some\path\data\table1.csv
select /*csv*/ * from table1;
spool off;
我想看起来像这样
SET COLSEP ";"
spool current_dir\data\table1.csv
select /*csv*/ * from table1;
spool off;
这样在使用脚本时,在调用脚本时只需输入一次路径。
【问题讨论】:
您是否正在寻找一种方法来定义动态线轴位置?如果是那么-***.com/questions/1246360/… @JSapkota 不是真的,据我了解,您链接的部分所需路径存储在表中。我需要的是从脚本中获取 sql 脚本的位置。 【参考方案1】:更多的是一种解决方法,而不是问题的解决方案,但现在我只是在与运行脚本 (@script.sql
) 的 script.sql
相同的目录中创建了一个 scriptRunner.sql
文件。
当打开这个文件时,似乎SqlDevelopers 工作目录被设置为两个.sql
文件所在的目录,并且这个属性被扩展到被调用的脚本,因此我可以简单地使用
spool data\table1.csv
【讨论】:
以上是关于在该脚本中使用相对于 SQL 脚本位置的路径?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Ubuntu 上的 mysql 中运行 sql 脚本?