#sql #postgresql #pgadmin-4
#sql #postgresql #pgadmin-4
Вопрос:
Я начал изучать PostgreSQL и pgAdmin 4. У меня проблема с чтением CSV-файла с рабочего стола. Я просмотрел весь Интернет и этот веб-сайт, но не смог найти ответ. Я получаю эту ошибку:
ERROR: could not open file "C:UsersJasminaDesktopOnlineRetail2.csv" for reading: Permission denied
SQL state: 42501
Я пытался использовать /copy
, но все еще не работает. В чем проблема, что я делаю не так?4
CREATE TABLE Public."My_OnlineRetail"(InvoiceNo int,
StockCode varchar(100),
Description varchar(100),
Quantity int,
InvoiceDate timestamp,
UnitPrice float,
Currency varchar(10),
CustomerID int,
Country varchar(100));
SELECT * FROM Public."My_OnlineRetail";
COPY Public."My_OnlineRetail" FROM 'C:UsersJasminaDesktopOnlineRetail2.csv' DELIMITER ',' CSV HEADER;
Комментарии:
1. вероятно, учетная запись, под которой работает сервер PostgreSQL, не может получить доступ к файлам в вашем личном каталоге пользователя. Не забывайте, что SQL server работает как служба с другим идентификатором. Другие учетные данные пользователя обычно не могут получить доступ к вашему каталогу пользователей, если они не являются администраторами. Попробуйте поместить файл в нейтральное место на диске и убедитесь, что разрешения для файла и родительской папки позволят учетной записи SQL получить к нему доступ.
2. Как это сделать? Мой файл находится на рабочем столе, и каждый может получить к нему доступ. Я попытался поместить файл в другие папки, и он по-прежнему не работает
3. кто именно «все»? Другие учетные записи пользователей на том же компьютере обычно не имеют доступа к вашему рабочему столу, если только вы серьезно не перепутали разрешения файловой системы (чего вы действительно не должны). И когда вы «помещали файл в другие папки», вы проверяли разрешения файла / папки, как я упоминал? Вы проверили, какое удостоверение использует служба SQL, и убедились, что удостоверение имеет доступ на чтение к папке и файлу? Вы ничего из этого не подтвердили, но утверждаете, что это не работает. Я не могу консультировать вас без подробной информации о ситуации.
Ответ №1:
Для тех, кто все еще ищет ответ, в моем случае под Windows Server учетная запись (или пользователь по умолчанию), которую запускает сервер PostgreSQL, ‘ NETWORK SERVICES
‘.
Вы можете проверить это, перейдя по
«Службы» -> «postgresql …» -> Свойства (щелчком правой кнопки мыши) -> Войти (вторая вкладка)
.
Затем вы можете добавить разрешения для учетной записи для файла, который вы хотите СКОПИРОВАТЬ, в «Чтение».
Комментарии:
1. Я вижу вкладку входа в систему, но не вижу, как я добавляю разрешения
2. Вы должны открыть WindowsExplorer, щелкнуть правой кнопкой мыши на вашем файле -> Свойства -> Вкладка Безопасность -> Редактировать разрешения -> Добавить -> ввести «Сетевые службы» -> Проверить имена -> ОК -> Выбрать разрешения на чтение для «Сетевых служб