2013-04-17 53 views
6

例如,假设我想从运行postgres服务器的同一台机器上的路径导入CSV文件。是否可以在postgres sql命令中引用环境变量?

有一个环境变量MyPath在系统上设置为'/path/to/my/csv/file/'

我可以很容易地导入该CSV文件如下:

COPY MyTable FROM 
'/path/to/my/csv/file/myTable.csv' 
DELIMITERS ',' 
CSV HEADER; 

是否有可能从内部Postgres的这个SQL命令引用myPath变量中?大意如下的内容:

COPY MyTable FROM 
get_environmental_variable('MyPath') || 'myTable.csv' 
DELIMITERS ',' 
CSV HEADER; 

回答

3

如果安装PL/R,您可以使用plr_environ()函数来获取环境变量及其值的列表为COPY MyTable from (SELECT VALUE FROM plr_environ() WHERE name = 'MyPath');其他存储过程语言可能有相似的方式 - 在plpython中,我想可以使用os.environ ['MyPath'],plperlu可以访问%ENV哈希,等等。如果您需要进一步的帮助,请留下评论,我会很乐意为您进一步研究。

6

试试这个,同时启动

psql --set 'var=foo' -c '\i thesqlscript' 

这在查询

update table set column = :var; 

这是从this question on the forum

如果您使用的是Postgres旧版本的拍摄,这看起来像同样的问题问in the postgres forum(虽然这是很多年前)。 没有直接的方法,但他们已经给出了一些解决方法。

相关问题