PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Postgres Copia da variabile con dati CSV

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.