これは、SQLの COPY
では不可能です。 指図。 コピーコード> ファイルからのコピーのみ またはSTDIN 。
変数の内容をファイルに書き込むか、STDINを介してパイプすることができます。数行以上の場合にのみ意味があります。
更新前にあなたの質問を誤解したと思います。おそらくこれは必要ありません:
ファイルパスは他のデータ項目のように交換することはできず、そのためにプリペアドステートメントを使用することはできません。 全体を作成する 実行する前のステートメント、または次のようなサーバー側関数を使用した動的SQLに頼る:
CREATE OR REPLACE FUNCTION f_cp(_file text)
RETURNS void AS
$BODY$
BEGIN
EXECUTE format($$COPY zip_codes FROM %L DELIMITER ',' CSV$$, $1);
END
$BODY$
LANGUAGE plpgsql;
電話:
SELECT f_cp('/var/lib/postgres/sync/myfile.csv')
format()
Postgres9.1以降が必要です。