Ich möchte die COPY-Funktion in PostgreSQL verwenden, um eine CSV-Datei in eine PostgreSQL-Datenbank zu importieren.
Wo der Dateiname in der Dokumentation steht, muss die CSV-Datei dies tun an einem bestimmten Ort gespeichert oder an einem beliebigen Ort gespeichert werden.
Zum Beispiel copy data_table from '/tmp/outputdata.csv' WITH DELIMITER AS ',' CSV QUOTE AS '"';
. Wo heißt tmp
, bedeutet das den tmp-Ordner im Laufwerk C:. Kann es zu einem anderen Ordnernamen geändert werden?
Es sieht so aus, als ob Sie von Linux vs. Windows-Dateipfadnotation verwirrt sind. Was Sie dort haben, ist ein Linux-Pfad, der in root verankert ist. Windows verwendet Laufwerksbuchstaben - die Sie auch unter Windows angeben können.
Wenn Sie die Windows-Notation verwenden, müssen Sie Backslashes > zurückgeben, wenn Sie nicht standard_conforming_strings = on
- das ist der Standard in der neuesten Version 9.1, aber nicht in älteren Versionen. So:
Funktioniert auf jeden Fall.
Mit standard_conforming_strings = on
könntest du auch schreiben:
Beachten Sie, dass ein PostgreSQL-Windows-Server auch die Standardpfadnotation mit Schrägstrichen anstelle von Backslashes versteht.
Für SQL COPY FROM / TO
können Sie einen beliebigen Pfad zum Eigentümer des Servers verwenden process ( postgres
standardmäßig) hat die Berechtigung zum Lesen / Schreiben.
Beachten Sie, dass für den Meta-Befehl \copy
des psql-Clients die Berechtigungen gelten des aktuellen lokalen Benutzers gelten.
Tags und Links postgresql csv postgresql-copy