2013-04-17 13 views
6

たとえば、postgresサーバーが実行されているマシン上のパスからCSVファイルをインポートしたいとします。postgres sqlコマンド内で環境変数を参照することはできますか?

'/path/to/my/csv/file/'には、環境変数MyPathが設定されています。

私は簡単に次のように、このCSVファイルをインポートすることもできます

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

それが、これはSQLコマンドをpostgresに内からMYPATH変数を参照することは可能ですか?以下の線に沿って何か:

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

答えて

3

あなたがPL/Rをインストールする場合、あなたはCOPY MyTable from (SELECT VALUE FROM plr_environ() WHERE name = 'MyPath')として、環境変数とその値のリストを取得するにはplr_environ()関数を使用することができます。他のストアドプロシージャ言語にもおそらく同様の方法があります.plpythonでは、os.environ ['MyPath']を使うことができますが、plperluは%ENVハッシュにアクセスできると思います。さらなる助けが必要な場合は、コメントを残してください。私はこれをさらに調査してくれるでしょう。

6

これがどのように見える、あなたはpostgresの古いバージョンを使用している場合、これはthis question on the forum

から取られ

update table set column = :var; 

クエリで

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

そして、これを起動しながらこれを試してみてください同じ質問はin the postgres forumと聞いたことがある(これは長年前だが)。 直接的な方法はありませんが、いくつかの回避策があります。

関連する問題