it-swarm.com.de

Wie exportiere ich eine Tabelle als CSV mit Überschriften auf Postgresql?

Ich versuche, eine PostgreSQL-Tabelle mit Überschriften über die Befehlszeile in eine CSV-Datei zu exportieren. Ich kann sie jedoch in eine CSV-Datei exportieren, jedoch ohne Überschriften.

Mein Code sieht wie folgt aus:

COPY products_273 to '/tmp/products_199.csv' delimiters',';
391
Roland
COPY products_273 TO '/tmp/products_199.csv' WITH (FORMAT CSV, HEADER);

wie im Handbuch beschrieben .

568
Milen A. Radev

Von der psql Kommandozeile:

\COPY my_table TO 'filename' CSV HEADER

kein Semikolon am Ende.

203

anstatt nur einen Tabellennamen zu verwenden, können Sie auch eine Abfrage schreiben, um nur ausgewählte Spaltendaten abzurufen.

COPY (select id,name from tablename) TO 'filepath/aa.csv' DELIMITER ',' CSV HEADER;

mit Administratorrechten

\COPY (select id,name from tablename) TO 'filepath/aa.csv' DELIMITER ',' CSV HEADER;
111
Dhruvil Thaker

Wenn ich keine Berechtigung zum Schreiben einer Datei aus Postgres habe, kann ich die Abfrage über die Befehlszeile ausführen.

psql -U user -d db_name -c "Copy (Select * From foo_table LIMIT 10) To STDOUT With CSV HEADER DELIMITER ',';" > foo_data.csv
91
Brian

Das funktioniert

psql dbname -F , --no-align -c "SELECT * FROM TABLE"
32
jordg

Für Version 9.5, die ich verwende, würde es so aussehen:

COPY products_273 TO '/tmp/products_199.csv' WITH (FORMAT CSV, HEADER);

Diese Lösung hat bei mir mit \copy funktioniert.

psql -h <Host> -U <user> -d <dbname> -c "\copy <table_name> FROM '<path to csvfile/file.csv>' with (format csv,header true, delimiter ',');"
5
Atihska

Hier ist, wie ich es funktioniert Power Shell mit Pgsl Connnect zu einer Heroku PG-Datenbank:

Ich musste zuerst die Client-Codierung in utf8 wie folgt ändern: \encoding UTF8

Dann werden die Daten in eine CSV-Datei gespeichert:

\copy (SELECT * FROM my_table) TO  C://wamp64/www/spider/chebi2/dump.csv CSV DELIMITER '~'

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 benutzter characeter.

3

Ich poste diese Antwort, weil keine der anderen hier gegebenen Antworten tatsächlich für mich funktioniert hat. Ich konnte COPY nicht 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 -Version von @Brian 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 mit der Codierung beschäftigt hat. Ich habe immer wieder diesen Fehler erhalten:

FEHLER: Zeichen mit der Bytefolge 0x81 in der Codierung "WIN1252" hat keine Entsprechung in der Codierung "UTF8"

Die Lösung, die ich letztendlich verwendet habe, war, ein kurzes JDBC-Skript (Java) zu schreiben, das die CSV-Datei liest und Einfügeanweisungen direkt in meine Postgres-Tabelle ausgibt. Dies hat funktioniert, aber die Eingabeaufforderung hätte auch funktioniert, wenn die Codierung nicht geändert worden wäre.

0
Tim Biegeleisen

kopieren (anysql query datawanttoexport) nach 'fileablsoutepathwihname' delimiter ',' csv header;

Mit diesem können Sie auch Daten exportieren.

0
user3767321