Exportieren einer PostgreSQL-Tabelle in eine CSV-Datei

Zusammenfassung: In diesem Tutorial lernen Sie verschiedene Techniken kennen, um Daten aus PostgreSQL-Tabellen in CSV-Dateien zu exportieren.

Im vorherigen Tutorial haben wir Ihnen gezeigt, wie Sie Daten aus einer CSV-Datei in eine Tabelle importieren können. Wir werden die persons Tabelle verwenden, die wir für den Import von Daten aus einer CSV-Datei erstellt haben.

posgresql export csv

Lassen Sie uns die Daten der persons Tabelle überprüfen.

SELECT*FROMpersons;
Code language: SQL (Structured Query Language) (sql)
posgresql import csv from pgAdmin tool persons table

Wir haben zwei Datensätze in der Tabelle.

Daten aus einer Tabelle mit der COPY-Anweisung in eine CSV-Datei exportieren

Am einfachsten lassen sich die Daten einer Tabelle mit der COPY-Anweisung in eine CSV-Datei exportieren. Wenn Sie zum Beispiel die Daten der Tabelle persons in eine CSV-Datei mit dem Namen persons_db.csv im Ordner C:\tmp exportieren möchten, können Sie folgende Anweisung verwenden:

COPY persons TO 'C:\tmp\persons_db.csv' DELIMITER ',' CSV HEADER;
Code language: SQL (Structured Query Language) (sql)

PostgreSQL exportiert alle Daten aus allen Spalten der Tabelle persons in die Datei persons_db.csv.

postgresql export csv

In manchen Fällen möchten Sie nur Daten aus einigen Spalten einer Tabelle in eine CSV-Datei exportieren. Dazu geben Sie die Spaltennamen zusammen mit dem Tabellennamen nach dem Schlüsselwort COPY an. Zum Beispiel exportiert die folgende Anweisung Daten aus den Tabellen first_namelast_name, und email Spalten der persons Tabelle nach person_partial_db.csv

COPY persons(first_name,last_name,email) TO 'C:\tmp\persons_partial_db.csv' DELIMITER ',' CSV HEADER;
Code language: SQL (Structured Query Language) (sql)
postgresql export csv partially

Wenn Sie den Header nicht exportieren wollen, der die Spaltennamen der Tabelle enthält, entfernen Sie einfach das HEADER-Flag in der COPY-Anweisung. Die folgende Anweisung exportiert nur Daten aus der email-Spalte der persons-Tabelle in eine CSV-Datei.

COPY persons(email) TO 'C:\tmp\persons_email_db.csv' DELIMITER ',' CSV;
Code language: SQL (Structured Query Language) (sql)
postgresql export csv teilweise ohne Header

Beachten Sie, dass der CSV-Dateiname, den Sie im Befehl COPY angeben, direkt vom Server geschrieben werden muss. Das bedeutet, dass sich die CSV-Datei auf dem Rechner des Datenbankservers befinden muss, nicht auf Ihrem lokalen Rechner. Die CSV-Datei muss außerdem von dem Benutzer, unter dem der PostgreSQL-Server läuft, beschreibbar sein.

Daten aus einer Tabelle mit dem Befehl \copy in eine CSV-Datei exportieren

Wenn Sie Zugriff auf einen entfernten PostgreSQL-Datenbankserver haben, aber nicht über ausreichende Rechte verfügen, um in eine Datei darauf zu schreiben, können Sie den in PostgreSQL integrierten Befehl \copy verwenden.

Der \copy-Befehl führt im Grunde die obige COPY-Anweisung aus. Anstatt dass jedoch der Server die CSV-Datei schreibt, schreibt psql die CSV-Datei und überträgt die Daten vom Server in Ihr lokales Dateisystem. Um den \copy-Befehl zu verwenden, müssen Sie nur über ausreichende Rechte auf Ihrem lokalen Rechner verfügen. Er benötigt keine PostgreSQL-Superuser-Rechte.

Wenn Sie zum Beispiel alle Daten der Tabelle persons in die Datei persons_client.csv exportieren möchten, können Sie den Befehl \copy vom psql-Client aus wie folgt ausführen:

\copy (SELECT * FROM persons) to 'C:\tmp\persons_client.csv' with csv
Code language: SQL (Structured Query Language) (sql)

In diesem Tutorial haben wir Ihnen gezeigt, wie Sie die COPY-Anweisung und den \copy-Befehl verwenden, um Daten aus einer Tabelle in CSV-Dateien zu exportieren.

  • War dieses Tutorial hilfreich?
  • JaNein

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.