是否可以在.sql文件中使用Linux环境变量?我正在使用复制/选择查询来写入输出文件,并且我想将该目录放入变量中。所以我想做这样的事情:
COPY (SELECT * FROM a) TO $outputdir/a.csv
Outputdir将在我的环境中设置。这可能吗?
您可以将shell命令的结果存储在这样的psql变量中:
psql
\set afile `echo "$outputdir/a.csv"` COPY (SELECT * FROM a) TO :'afile';
您的案例的一个例子是:
\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