Ich versuche, eine PostgreSQL-Tabelle mit Überschriften über die Befehlszeile in eine CSV-Datei zu exportieren, erhalte sie jedoch zum Exportieren in eine CSV-Datei, jedoch ohne Überschriften.
Mein Code sieht wie folgt aus:
COPY products_273 to '/tmp/products_199.csv' delimiters',';
postgresql
csv
export-to-csv
heading
postgresql-copy
Elitmiar
quelle
quelle
Antworten:
wie im Handbuch beschrieben .
quelle
COPY
erfordert Administratorrechte. Verwenden Sie\COPY
stattdessen, wenn Sie auf Probleme stoßen.COPY products_273 TO '/tmp/products_199.csv' WITH (FORMAT CSV, HEADER);
Über die psql-Befehlszeile:
kein Semikolon am Ende.
quelle
COPY
Befehl Administratorzugriff erfordertpsql
Ansatz kann man die Ausgabe überall dort speichern, wo man Zugriff hat. Ich habe gerade denpsql
Ansatz verwendet, um Daten von einem Remote-Server in eine lokale Datei zu bekommen. Sehr glatt.pg_dump -h remote | pg_restore -h localhost
.psql -c "\COPY (SELECT * FROM mytable) TO STDOUT" > mytable.csv
Anstelle nur des Tabellennamens können Sie auch eine Abfrage schreiben, um nur ausgewählte Spaltendaten abzurufen.
mit Administratorrechten
quelle
\COPY ...
) benötigen . Und zumindest in meiner Version von psql (9.5.2) musste ich 'DELIMITER' nicht angeben; Die Standardeinstellung war ein Komma.Wenn ich keine Berechtigung zum Schreiben einer Datei aus Postgres habe, kann ich die Abfrage über die Befehlszeile ausführen.
quelle
Das funktioniert
quelle
-F ,
und benutze es|
als Trennzeichen. Vielen Dank!COPY
Aussage, die eine Datei erstellt, die wiederverwendet werden sollFür Version 9.5, die ich benutze, wäre es so:
quelle
Diese Lösung hat bei mir funktioniert
\copy
.quelle
Der einfachste Weg (mit
psql
) scheint die Verwendung von--csv
flag zu sein:quelle
Hier ist, wie ich es dazu gebracht habe, Power Shell mit pgsl connnect zu einer Heroku PG-Datenbank zu betreiben:
Ich musste zuerst die Client-Codierung wie folgt in utf8 ändern:
\encoding UTF8
Dann haben die Daten in einer CSV-Datei wie folgt gespeichert:
Ich habe ~ als Trennzeichen verwendet, weil ich CSV-Dateien nicht mag. Normalerweise verwende ich TSV-Dateien, aber ich kann nicht '\ t' als Trennzeichen hinzufügen, also habe ich ~ verwendet, weil es ein selten verwendetes Zeichen ist.
quelle
Kopieren (anysql-Abfragedaten zum Exportieren) in 'fileablsoutepathwihname' delimiter ',' csv header;
Mit diesem können Sie auch Daten exportieren.
quelle
Ich poste diese Antwort, weil keine der anderen hier gegebenen Antworten tatsächlich für mich funktioniert hat. Ich konnte nicht
COPY
innerhalb von Postgres verwenden, da ich nicht die richtigen Berechtigungen hatte. Also habe ich "Rasterzeilen exportieren" gewählt und die Ausgabe als UTF-8 gespeichert.Die
psql
von @Brian gegebene Version hat aus einem anderen Grund auch bei mir nicht funktioniert. Der Grund, warum es nicht funktioniert hat, ist, dass sich anscheinend die Windows-Eingabeaufforderung (ich habe Windows verwendet) selbst in die Codierung eingemischt hat. Ich bekam immer wieder diesen Fehler:Die Lösung, die ich letztendlich verwendete, bestand darin, ein kurzes JDBC-Skript (Java) zu schreiben, das die CSV-Datei las und Einfügeanweisungen direkt in meine Postgres-Tabelle ausgab. Dies funktionierte, aber die Eingabeaufforderung hätte auch funktioniert, wenn die Codierung nicht geändert worden wäre.
quelle
Versuchen Sie Folgendes: "COPY products_273 FROM '\ tmp \ products_199.csv' DELIMITER ',' CSV HEADER"
quelle