Odmowa dostępu do pliku podczas próby importu

18

Kiedy próbuję użyć \ina pliku, który nie jest w psql.exe folderu mówi C:: permission denied. Na przykład mam plik z poleceniem SQL at C:\Users\Work\Desktop\School Work\load_database.sqli kiedy piszę \i "C:\Users\Work\Desktop\School Work\load_database.sql", mówi C:: permission denied. Jak mogę to naprawić?

Znalazłem pracę wokół tutaj gdzie skopiować plik .sql do tego samego folderu jako psql.exe jest.

Nawiasem mówiąc, czy \ oznacza import?

Celeritas
źródło

Odpowiedzi:

34

Właśnie natrafiłeś na osobliwość psqlsystemu Windows.

W moim komentarzu chciałem po prostu wykluczyć możliwość, że tak naprawdę nie masz niezbędnego pozwolenia. Potem okazało się, że nawet w systemie Windows trzeba używać „normalnych” ukośników zamiast odwrotnych ukośników, to znaczy:

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

powinien działać dobrze bez względu na to, od którego folderu zaczniesz psql. Zauważ, że użyłem pojedynczych cudzysłowów - z podwójnymi

"C:/Users/Work/Desktop/School Work/load_database.sql": Invalid argument
dezso
źródło
Mam to, dzieki. Skąd wiedziałeś, że używasz pojedynczych, a nie podwójnych cudzysłowów? Czy to ogólna zasada dla postgresów, czy jaka jest różnica?
Celeritas,
1
@Celeritas Myślę, że jest to wynik konfliktu tego, w jaki sposób Windows używa podwójnych cudzysłowów w ścieżkach i jak psql(i PostgreSQL) używają go w identyfikatorach.
dezso
Ta praca didn't dla mnie w Windows 10, ukośniki i wszystkim odpowiedź user68006 męska zrobił, choć
Scaramouche
1
@Scaramouche dzięki za opinie! Najwyraźniej nie wszystkie odrzucone uprawnienia są sobie równe.
dezso
6

Umieść plik w jakimś katalogu z pełnym uprawnieniem dla wszystkich, na przykład „c: \ tmp”

LUB

Ustaw uprawnienia do odczytu pliku, który chcesz zaimportować.

Umożliwiam czytanie „Wszystkim”.

Po zaimportowaniu pliku możesz cofnąć to uprawnienie.

właściwości pliku systemu Windows

użytkownik68006
źródło