postgresql - importar - Use psql''s / copy para una consulta multilínea
importar csv a postgres (1)
Esta es una pregunta de seguimiento de esta respuesta para " Guardar la salida PL / pgSQL de PostgreSQL a un archivo CSV ".
Necesito escribir un archivo CSV del lado del cliente con el comando /copy
psql. Un trazador de líneas funciona:
db=> /copy (select 1 AS foo) to ''bar.csv'' csv header
COPY 1
Sin embargo, tengo largas consultas que abarcan varias líneas. No necesito mostrar la consulta, ya que parece que no puedo extender esta última línea sin un error de análisis:
db=> /copy (
/copy: parse error at end of line
db=> /copy ( //
/copy: parse error at end of line
db=> /copy ("
/copy: parse error at end of line
db=> /copy "(
/copy: parse error at end of line
db=> /copy //
/copy: parse error at end of line
¿Es posible usar /copy
con una consulta que abarca varias líneas? Estoy usando psql en Windows.
La solución de trabajo que tengo ahora es crear una vista temporal , que se puede declarar en múltiples líneas, luego seleccionarla en el comando /copy
, que se ajusta cómodamente en una línea.
db=> CREATE TEMP VIEW v1 AS
db-> SELECT i
db-> FROM generate_series(1, 2) AS i;
CREATE VIEW
db=> /cd /path/to/a/really/deep/directory/structure/on/client
db=> /copy (SELECT * FROM v1) TO ''out.csv'' csv header
COPY 2
db=> DROP VIEW v1;
DROP VIEW