Es sieht aus wie Sie von Linux und Windows-Datei-Pfad-Notation verwechselt werden. 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 Windows-Notation verwenden, achten Sie darauf, dass Sie Flucht Schrägstriche haben wenn Sie nicht standard_conforming_strings = on
verwenden - dies ist die Standardeinstellung in der aktuellen Version 9.1 ist jedoch nicht in älteren Versionen. So geht's:
COPY data_table from E'C:\\tmp\\outputdata.csv' WITH ...
Funktioniert auf jeden Fall.
Mit standard_conforming_strings = on
könnte man auch schreiben:
COPY data_table from 'C:\tmp\outputdata.csv' WITH ...
Beachten Sie, dass ein PostgreSQL Windows-Server-Standardpfad Schreibweise mit Schrägstrichen statt Schrägstrichen auch versteht.
Für SQL COPY FROM/TO
können Sie einen beliebigen Pfad verwenden, den der Besitzer des Servers (postgres
standardmäßig) Lese-/Schreibberechtigung hat.
Beachten Sie, dass für den Meta-Befehl \copy
des Psql-Clients die Berechtigungen des aktuellen lokalen Benutzers gelten.
Vielen Dank für die Erklärung. – Jeiman
Verwenden Sie nicht den Befehl COPY mit pgAdmin auf einem Windows-Computer und versuchen Sie, eine Datei von Ihrer lokalen Windows-Umgebung zu lesen. Dies wird fehlschlagen. Sie können eine CSV-Datei trotzdem importieren. Verwenden Sie dazu die GUI. Klicken Sie mit der rechten Maustaste auf die gewünschte Tabelle und wählen Sie den Import ... – R13e