Die Berechtigung wurde in der Datei verweigert, die den Import versucht

16

Wenn ich versuche, \ifür eine Datei zu verwenden, die sich nicht im Ordner psql.exe befindet, heißt es C:: permission denied. Zum Beispiel habe ich eine Datei mit dem SQL-Befehl um C:\Users\Work\Desktop\School Work\load_database.sqlund wenn ich \i "C:\Users\Work\Desktop\School Work\load_database.sql"es eingebe, heißt es C:: permission denied. Wie kann ich das beheben?

Ich habe hier eine Arbeit gefunden, bei der Sie die .sql-Datei in denselben Ordner kopieren, in dem sich psql.exe befindet.

Steht \ i übrigens für Import?

Celeritas
quelle

Antworten:

30

Sie sind gerade auf eine Besonderheit von psqlWindows gestoßen.

In meinem Kommentar wollte ich nur die Möglichkeit ausschließen, dass Sie wirklich nicht die notwendige Erlaubnis hatten. Dann stellte sich heraus, dass Sie auch unter Windows "normale" Schrägstriche anstelle von Backslashes verwenden müssen, das heißt:

\i 'C:/Users/Work/Desktop/School Work/load_database.sql'

sollte problemlos funktionieren, unabhängig davon, von welchem ​​Ordner Sie ausgehen psql. Beachten Sie, dass ich einfache Anführungszeichen verwendet habe - mit doppelten Anführungszeichen, die Sie erhalten haben

"C:/Users/Work/Desktop/School Work/load_database.sql": Invalid argument
dezso
quelle
Danke, verstanden. Woher wussten Sie, dass Sie einfache und keine doppelten Anführungszeichen verwenden sollten? Ist das eine allgemeine Regel für Postgres oder was ist der Unterschied?
Celeritas
1
@Celeritas Ich denke, es ist das Ergebnis eines Konflikts, wie Windows doppelte Anführungszeichen in Pfaden verwendet und wie psql(und PostgreSQL) es in Bezeichnern verwendet.
Dezso
dies nicht funktioniert für mich in Microsoft Windows 10, Schrägstrichen und alle, user68006 Antwort tat, obwohl
Scaramouche
1
@Scaramouche danke für das feedback! Anscheinend sind nicht alle verweigerten Berechtigungen gleich.
Dezso
6

Legen Sie die Datei in einem Verzeichnis ab, in dem alle Benutzer die volle Berechtigung haben, z. B. 'c: \ tmp'.

ODER

Legen Sie die Leserechte für die Datei fest, die Sie importieren möchten.

Ich habe 'Jeder' Lesegenehmigung gegeben.

Nach dem Import der Datei können Sie diese Berechtigung widerrufen.

Windows-Dateieigenschaften

user68006
quelle