Отказано в доступе к файлу при попытке импорта

17

Когда я пытаюсь использовать \iфайл, который не находится в папке psql.exe, он говорит C:: permission denied. Например, у меня есть файл с командой SQL, C:\Users\Work\Desktop\School Work\load_database.sqlи при вводе \i "C:\Users\Work\Desktop\School Work\load_database.sql"он говорит C:: permission denied. Как я могу это исправить?

Я нашел работу вокруг здесь , где вы копируете файл .sql в ту же папку, psql.exe в.

Кстати, а я стою за импорт?

Celeritas
источник

Ответы:

32

Вы только что столкнулись с особенностью psqlWindows.

В своем комментарии я просто хотел исключить возможность того, что у вас действительно не было необходимого разрешения. Затем оказалось, что даже в Windows вы должны использовать «нормальные» косые черты вместо обратных, то есть:

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

должно работать нормально независимо от того, с какой папки вы начинаете psql. Обратите внимание, что я использовал одинарные кавычки - с двойными кавычками вы получили

"C:/Users/Work/Desktop/School Work/load_database.sql": Invalid argument
Dezso
источник
Понял, спасибо. Как вы узнали, что нужно использовать одинарные, а не двойные кавычки? Это общее правило для postgres или в чем разница?
Celeritas
1
@Celeritas Я думаю, что это является результатом конфликта того, как Windows использует двойные кавычки в путях и как psql(и PostgreSQL) используют его в идентификаторах.
Dezso
это didn't работа для меня в Windows 10, слэше и все, ответ user68006 игровых сделал, хотя
Скарамуш
1
@ Scaramouche спасибо за отзыв! Видимо, не все отказанные разрешения созданы равными.
Дезсо
6

Поместите файл в какой-либо каталог с полным разрешением для всех, например, 'c: \ tmp'

ИЛИ

Установите права на чтение для файла, который вы хотите импортировать.

Я поставил «Все» разрешение на чтение.

После импорта файла вы можете отозвать это разрешение.

свойства файла windows

user68006
источник