Nie jest to możliwe z SQL COPY
Komenda. COPY
tylko kopie z pliku lub STDIN .
Możesz zapisać zawartość zmiennej do pliku lub potoku przez STDIN. Ma sens tylko w przypadku więcej niż kilku rzędów.
Myślę, że źle zrozumiałem twoje pytanie przed aktualizacją, prawdopodobnie nie potrzebujesz tego:
Ścieżka do pliku nie może być wymieniana jak inne elementy danych i nie można do tego wykorzystać przygotowanej instrukcji. Zbuduj całość instrukcja przed wykonaniem lub skorzystaj z dynamicznego SQL z funkcją po stronie serwera, taką jak:
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;
Zadzwoń:
SELECT f_cp('/var/lib/postgres/sync/myfile.csv')
format()
wymaga Postgresa 9.1 lub nowszego.