sql - 在 PSQL 脚本中使用环境变量

标签 sql postgresql environment-variables

是否可以在 .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/

相关文章:

MSBuild 无法扩展环境变量

php - 查询根据特定日期从数据库中选择数据并计算有多少行?

sql - 在 Firebird 中创建一个整数时间戳

php时间函数

postgresql - 在 Postgres 9.0+ 中使用 PL/pgSQL 循环表

linux - IZPack 设置 Linux 环境变量

mysql - 每个表上都有一个主键是否意味着我的表/数据库是 "properly"索引(MySQL)?

postgresql - Postgres 选择查询在使用 JDBC 时运行缓慢,但在同一服务器的 PSQL 中运行时运行速度很快

sql - 在值 PostgreSQL 之间选择最大值

windows - 是否有任何环境变量代表 "C:\Documents and Settings"文件夹或 C :\Users folder in Windows?