sql >> Base de Datos >  >> RDS >> PostgreSQL

Postgres Copiar de variable con datos CSV

Eso no es posible con SQL COPY dominio. COPY solo copias de un archivo o STDIN .

Puede escribir el contenido de la variable en un archivo o canalizarlo a través de STDIN. Solo tiene sentido para más de un par de filas.

Creo que no entendí bien tu pregunta antes de la actualización, probablemente no necesites esto:

La ruta del archivo no se puede intercambiar como otros elementos de datos, y no puede usar una declaración preparada para eso. Construir el todo declaración antes de ejecutar o recurrir a SQL dinámico con una función del lado del servidor como:

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;

Llamar:

SELECT f_cp('/var/lib/postgres/sync/myfile.csv')

format() requiere Postgres 9.1 o posterior.