PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Exportieren von Daten mit Zeilenvorschüben als CSV aus PostgreSQL

Um die Datei auf einen anderen Server zu exportieren, haben Sie zwei Möglichkeiten:

  • Erstellen eines gemeinsamen Ordners zwischen den beiden Servern, damit die Datenbank auch Zugriff auf dieses Verzeichnis hat.

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

  • Triggern des Exports vom Zielserver über STDOUT vonCOPY . Verwenden von psql Sie können dies erreichen, indem Sie den folgenden Befehl ausführen:

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

BEARBEITEN :Behebung des Problems von Feldern mit Zeilenvorschüben (\n )

Falls Sie die Zeilenvorschübe loswerden wollen, verwenden Sie den REPLACE Funktion.

Beispiel:

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

Zeilenvorschub entfernen:

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

Also Ihre COPY sollte so aussehen:

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