是否可以在 .sql 文件中使用 Linux 环境变量?我正在使用复制/选择查询来写入输出文件,我想将该目录放在一个变量中。所以我想做类似的事情:
COPY (SELECT * FROM a)
TO $outputdir/a.csv
Outputdir 将在我的环境中设置。这可能吗?
最佳答案
您可以像这样将 shell 命令的结果存储在 psql
变量中:
\set afile `echo "$outputdir/a.csv"`
COPY (SELECT * FROM a) TO :'afile';
另一种(我认为更好的)解决方案是仅使用 psql
变量,参见 this answer of mine about psql variables ,这与您的示例类似。您的案例的一个例子是:
\set outputdir '/path/to/output'
\set afile :outputdir '/a.csv'
COPY (SELECT * FROM a) TO :'afile';
请注意,在示例中,您需要在脚本文件中设置变量,但如果您在调用 psql
时设置它,则可以跳过第一行:
psql --set=outputdir="$outputdir" <conn parameters> -f /path/to/yourscript.sql
关于sql - 在 PSQL 脚本中使用环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18725880/