Import von CSV mit COPY in Datenbank

Versuche schon seit Tagen einen CSV-Import mit dem COPY-Befehl.

copy land from E'c:\\users\\user\\documents\\land.csv'

Es funktioniert mit psql und mit pgAdmin III nicht. Als Fehlermeldung erscheint

bei psql:

 "Konnte die Datei >>c:\users\user\documents\land.csv<< nicht zum lesen öffnen: Permission denied

bei pgAdmin III:

FEHLER: konnte Datei »c:\users\user\documents\land.csv« nicht zum Lesen öffnen: Permission denied
SQL Status:42501

Dabei habe ich Dateipfad, Datei und auch die Datenbank zum lesen/schreiben freigegeben.

Was könnte noch die Ursache sein?

Nutze Windows7-64bit

Die Datei wird direkt von der Datenbank gelesen. Du musst also die Rechte nicht (nur) für dich freigeben sondern auch für den Benutzer, unter dem die Datenbank läuft.
Unter Windows ist das wohl “postgres”.


Eine Alternative wäre der Befehl \copy in psql. Damit wird die Datei von psql gelesen und an die Datenbank übertragen. Das ist ein gutes Stück langsamer, tut aber auch.

Habe ich in pgAdmin3 versucht, damit kommt dieser Fehlercode heraus “[ERROR ] 1.0: syntax error, unexpected character”. In psql kommt der Hinweis:

test=# copy land from E’c:\users\user\documents\land.csv’;
WARNUNG: nicht standardkonforme Verwendung von \ in Zeichenkettenkonstante
TIP: Verwenden Sie die Syntax für Escape-Zeichenketten für Backslashes, z.B. E’\’
FEHLER: Syntaxfehler bei 'c:\users\user\documents\land …
ZEILE 1: COPY land FROM STDIN 'c:\users\user\documents\land …
___________________________^

Ich habe das alles mit Backslash und Slash vorwärts und rückwärts probiert. Immer wieder der selbe Fehler.

Ich habe nicht von pgAdminIII gesprochen!
pgAdminIII kann mit dem psql-Befehl \copy nichts anfangen.

Warum schreibst du da E davor und bekommst eine Warnung?
Warum schreibst du zwei \ statt nur einem?

Aber na ja, Windows …