Das ist mit dem SQL COPY
nicht möglich Befehl. COPY
kopiert nur aus einer Datei oder STDIN .
Sie können den Inhalt der Variablen entweder in eine Datei schreiben oder über STDIN weiterleiten. Nur sinnvoll für mehr als ein paar Zeilen.
Ich glaube, ich habe Ihre Frage vor dem Update falsch verstanden, Sie brauchen das wahrscheinlich nicht:
Der Dateipfad kann nicht wie andere Datenelemente ausgetauscht werden, und Sie können dafür keine vorbereitete Anweisung verwenden. Bauen Sie das Ganze -Anweisung vor der Ausführung oder verwenden Sie dynamisches SQL mit einer serverseitigen Funktion wie:
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;
Aufruf:
SELECT f_cp('/var/lib/postgres/sync/myfile.csv')
format()
erfordert Postgres 9.1 oder höher.