2013-04-17 56 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(雖然這是很多年前)。 沒有直接的方法,但他們已經給出了一些解決方法。

相關問題