1119 Stimmen

Speichern der PL/pgSQL-Ausgabe von PostgreSQL in eine CSV-Datei

Wie kann ich die PL/pgSQL-Ausgabe einer PostgreSQL-Datenbank am einfachsten in einer CSV-Datei speichern?

Ich verwende PostgreSQL 8.4 mit pgAdmin III und dem PSQL-Plugin, von dem aus ich Abfragen ausführe.

40voto

benjwadams Punkte 1329

Wenn Sie interessiert sind an todo die Spalten einer bestimmten Tabelle zusammen mit Überschriften, können Sie

COPY table TO '/some_destdir/mycsv.csv' WITH CSV HEADER;

Das ist ein bisschen einfacher als

COPY (SELECT * FROM table) TO '/some_destdir/mycsv.csv' WITH CSV HEADER;

die meines Wissens nach gleichwertig sind.

28voto

maudulus Punkte 9671

Ich musste die \COPY weil ich die Fehlermeldung erhalten habe:

ERROR:  could not open file "/filepath/places.csv" for writing: Permission denied

Also habe ich benutzt:

\Copy (Select address, zip  From manjadata) To '/filepath/places.csv' With CSV;

und es funktioniert

24voto

calcsam Punkte 271

Ich arbeite mit AWS Redshift, das die Option COPY TO Funktion.

Mein BI-Tool unterstützt jedoch tabulatorgetrennte CSV-Dateien, also habe ich Folgendes verwendet:

 psql -h dblocation -p port -U user -d dbname -F $'\t' --no-align -c "SELECT * FROM TABLE" > outfile.csv

23voto

Dirk Eddelbuettel Punkte 345316

psql kann dies für Sie tun:

edd@ron:~$ psql -d beancounter -t -A -F"," \
                -c "select date, symbol, day_close " \
                   "from stockprices where symbol like 'I%' " \
                   "and date >= '2009-10-02'"
2009-10-02,IBM,119.02
2009-10-02,IEF,92.77
2009-10-02,IEV,37.05
2009-10-02,IJH,66.18
2009-10-02,IJR,50.33
2009-10-02,ILF,42.24
2009-10-02,INTC,18.97
2009-10-02,IP,21.39
edd@ron:~$

Ver man psql für Hilfe zu den hier verwendeten Optionen.

13voto

Amanda Nyren Punkte 485

In pgAdmin III gibt es eine Option zum Exportieren in eine Datei aus dem Abfragefenster. Im Hauptmenü heißt es Abfrage -> In Datei ausführen oder es gibt eine Schaltfläche, die dasselbe tut (ein grünes Dreieck mit einer blauen Diskette im Gegensatz zu dem einfachen grünen Dreieck, das nur die Abfrage ausführt). Wenn Sie die Abfrage nicht über das Abfragefenster ausführen, würde ich tun, was IMSoP vorgeschlagen hat, und den Kopierbefehl verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X