2015-05-26 9 views
5

Ich habe eine Abfrage in einer Datei geschrieben, die unter/Pfad/zu/Abfrage befindet. Wie kann ich das Ausgabeergebnis in eine CSV-Datei speichern, ohne COPY in der Abfrage zu verwenden? Ich habe den folgenden Befehl versucht, aber die Felder der Ausgabedatei sind durch "|" getrennt.Speichern von PSQL-Ausgabe in CSV-Datei

psql -U username -d dbname -f /path/to/query -o /path/to/output/file -F ',' 

Antwort

3

Es ist nicht in der Dokumentation erklärt, aber die -F Option erfordert die -A Option (unaligned Tabellenausgabe) zu arbeiten:

psql -U username -d dbname -f /path/to/query -o /path/to/output/file -F ',' -A 

Wenn Sie die Header in der CSV nicht wünschen, Das heißt, ohne zusätzliche Zeilen oben und unten, verwenden Sie auch die Option -t.

psql -U username -d dbname -f /path/to/query -o /path/to/output/file -F ',' -A -t 

Von der Hilfe:

-A, richten --no-unaligned Tabelle Ausgabemodus
-F, --field Scheider = STRING Satz Feldtrenner (Standard: „| ")
-t, --nur nur Druckzeilen

+0

Es funktioniert. Dies ist ein wenig pingelig, aber wie werde ich 2 zusätzliche Zeilen los: "SELECT " an der Spitze und "(Zeilen )" an der Unterseite? –

+0

Wenn Sie nur Tupel verwenden möchten, ohne andere Zeilen unten und oben, verwenden Sie die Option -t: 'psql -U Benutzername -d Datenbankname -f/Pfad/zu/Abfrage -o/Pfad/zu/Ausgabe/Datei - F ',' -A-t '. –

+0

Ich habe das versucht. Ich sah immer noch "SELECT , obwohl die Zeilenanzahl am unteren Rand verschwunden war. –