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.
Lassen Sie uns die Daten der persons
Tabelle überprüfen.
Code language: SQL (Structured Query Language) (sql)SELECT*FROMpersons;
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:
Code language: SQL (Structured Query Language) (sql)COPY persons TO 'C:\tmp\persons_db.csv' DELIMITER ',' CSV HEADER;
PostgreSQL exportiert alle Daten aus allen Spalten der Tabelle persons
in die Datei persons_db.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_name
last_name
, und email
Spalten der persons
Tabelle nach person_partial_db.csv
Code language: SQL (Structured Query Language) (sql)COPY persons(first_name,last_name,email) TO 'C:\tmp\persons_partial_db.csv' DELIMITER ',' CSV HEADER;
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.
Code language: SQL (Structured Query Language) (sql)COPY persons(email) TO 'C:\tmp\persons_email_db.csv' DELIMITER ',' CSV;
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:
Code language: SQL (Structured Query Language) (sql)\copy (SELECT * FROM persons) to 'C:\tmp\persons_client.csv' with csv
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