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

Esportazione di dati contenenti feed di riga come CSV da PostgreSQL

Per poter esportare il file in un altro server hai due opzioni:

  • Creazione di una cartella condivisa tra i due server, in modo che anche il database abbia accesso a questa directory.

COPY (SELECT field1,field2 FROM your_table) TO '[shared directory]' DELIMITER ',' CSV HEADER;

  • Attivazione dell'esportazione dal server di destinazione utilizzando STDOUT diCOPY . Usando psql puoi ottenerlo eseguendo il seguente comando:

psql yourdb -c "COPY (SELECT * FROM your_table) TO STDOUT" > output.csv

MODIFICA :Risoluzione del problema dei campi contenenti avanzamenti di riga (\n )

Nel caso in cui desideri eliminare i feed di riga, utilizza REPLACE funzione.

Esempio:

 SELECT E'foo\nbar';
 ?column? 
----------
 foo     +
 bar
(1 Zeile)

Rimozione dell'avanzamento riga:

SELECT REPLACE(E'foo\nbaar',E'\n','');
 replace 
---------
 foobaar
(1 Zeile)

Quindi il tuo COPY dovrebbe assomigliare a questo:

COPY (SELECT field1,REPLACE(field2,E'\n','') AS field2 FROM your_table) TO '[shared directory]' DELIMITER ',' CSV HEADER;