Ciò non è possibile con SQL COPY
comando. COPY
copie solo da un file o STDIN .
È possibile scrivere il contenuto della variabile in un file o inviarlo tramite pipe tramite STDIN. Ha senso solo per più di un paio di righe.
Penso di aver frainteso la tua domanda prima dell'aggiornamento, probabilmente non ti serve questo:
Il percorso del file non può essere scambiato come altri elementi di dati e non è possibile utilizzare un'istruzione preparata per questo. Costruisci il tutto istruzione prima di eseguire o ricorrere a SQL dinamico con una funzione lato server come:
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;
Chiama:
SELECT f_cp('/var/lib/postgres/sync/myfile.csv')
format()
richiede Postgres 9.1 o successivo.