Подтвердить что ты не робот

Разрешение отклонено при попытке импортировать CSV файл из PGAdmin

Я использую PGAdmin 1.14.3.

Когда я пытаюсь выполнить команду импорта:

COPY grad(country_code, postal_code, place_name, admin_name1, admin_code1, admin_name2, admin_code2, admin_name3, admin_code3, latitude, longitude, accuracy)
FROM 'C:\\Users\\denis\\Desktop\\BP2Project\\USA\\US.txt';

Я получаю

ОШИБКА: не удалось открыть файл "C:\Users\denis\Desktop\BP2Project\USA\US.txt" для чтения: Разрешение отказало в состоянии SQL: 42501

Я просмотрел другие похожие вопросы, и ни одна из них не решила мою проблему.

Я вошел в систему как пользователь "postgres", который является суперпользователем. Я не понимаю, почему я пропускаю разрешения. Я нахожусь в Windows 7.

4b9b3361

Ответ 1

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

Посмотрите эту статью, чтобы узнать, как изменить доступ к файлам безопасности в Windows.

Ответ 2

статья разрешений, указанная в ответе Houari и Flimzy является хорошим справочным материалом, но прямой ответ (быстрое исправление, которое я использовал):

  • Щелкните правой кнопкой мыши папку, содержащую файлы данных, на которые было отказано, и нажмите Свойства.
  • В окне Свойства папки выберите вкладку Безопасность.
  • Нажмите кнопку Изменить.
  • В открывшемся окне "Разрешения для папки" нажмите кнопку Добавить....
  • Введите Everyone в поле "Введите имена объектов для выбора" в текстовой области.
  • Нажмите ОК, и окно закроется.
  • Убедитесь, что разрешения по умолчанию Чтение и выполнение установлены в Разрешить с помощью флажка в предыдущем окне.
  • Нажмите ОК, и окно закроется.
  • Нажмите кнопку Применить в окне Свойства папки.

Теперь вы можете запустить инструкцию SQL COPY, которая должна получить доступ к этим файлам.

  • После этого вернитесь в окно Свойства папки.
  • Нажмите кнопку Изменить.
  • Выберите запись Everyone в поле "Группа или имена пользователей:".
  • Нажмите кнопку Удалить.
  • Нажмите ОК в остальных открытых окнах.

Теперь были возвращены права на то, что они были.

Ответ 3

Хорошо, так получилось, что команда COPY работает, чтобы экспортировать таблицу в CSV, шаг за шагом. Обратите внимание, что я использую pgAdmin 111.

  • Создайте целевую папку, в которую вы хотите экспортировать таблицу. Например: C:\myExports
  • Задайте права на чтение и запись в этой папке, выполнив следующие шаги:

Щелкните правой кнопкой мыши папку, содержащую файлы данных, для которых было отказано в доступе > , а затем нажмите "Свойства".

В окне Свойства папки выберите вкладку "Безопасность". Нажмите кнопку "Изменить".

В открывшемся окне "Разрешения для папки" нажмите кнопку "Добавить...". Введите "Все" в поле "Введите имена объектов для выбора" в текстовой области.

Нажмите "ОК", и окно закроется. Убедитесь, что для разрешений Read и Execute по умолчанию установлено значение Разрешить с помощью флажкa > check в предыдущем окне. Нажмите "ОК", и окно закроется.

Нажмите кнопку "Применить" в окне "Свойства папки".

  1. Это сложная часть, внутри папки myExports создайте пустой CSV файл с нужным именем. Например employee.csv

  2. Затем запустите команду "Копировать" следующим образом:

    скопировать сотрудника в 'C:\myExports\employee.csv' delimiter ',' csv;

employee - это имя таблицы в этом примере.

Надеюсь, что это поможет.

Ответ 4

Если вы не хотите предоставлять разрешения всем, вы можете добавить разрешения для учетной записи, которая запустила службу. На панели управления - "Администрирование" - "Службы" скопируйте имя учетной записи на вкладке "Вход". (В моей системе учетная запись называется "Сетевая служба".) Затем поделитесь папкой с CSV файлом с этим пользователем, как показано в ответе выше.

Ответ 5

Ответы на эту проблему в разных потоках идут примерно так: 1. "Скажите мне, какую команду вы использовали" 2. "Убедитесь, что у вас есть права доступа" 3. "Просто используйте/скопируйте"

Я просто попробовал предоставить разрешения для всех в файле cvs, с которого я пытаюсь скопировать, и по-прежнему дает мне отказ в разрешении. Я думаю, что эта функциональность сломана и была разбита на несколько последовательных выпусков в нескольких последовательных версиях Windows.

Ответ 6

для меня, и я потратил несколько долгих часов на это. У меня есть центральный db, находящийся на ящике HP с 14.04 postgresql-9.5 pgAdmin3 postgis-2.2, акции сделаны через tweeked долю Samba. Мои клиенты используют смесь окон 10.1, 7, 8.1, и у меня есть рабочий стол ubuntu 14.04.

Я работаю с большими таблицами, обновляющими записи и нормализующими данными, и создавал подпрограммы вокруг операторов копирования SQL из файлов CSV, которые были сделаны из основного COPY public.table_1 TO (папка общего доступа, которую я установил в Samba https://www.youtube.com/watch?v=ndAYZ0DJ-U4) '/srv/samba/share/[filename].csv'

Затем я могу обновить базу данных после того, как в таблицы были внесены изменения с помощью таблицы COPY_1 из '/srv/samba/share/test.csv' ИСПОЛЬЗОВАНИЕ DELIMITITERS ',' WITH NULL AS '' CSV HEADER; от любого из моих клиентов.

Ключевым моментом, который я смог определить, является то, что клиенты, выполняющие обновление, должны быть суперпользователями, также все должно связываться с точки зрения пользователей, поскольку здесь работают 4 сервера Postgresql, Samba, UNIX и WINS Все мои пользователи зарегистрированы на каждом из серверов с одним и тем же именем пользователя, и одним из основных факторов является его однородность.

Я долго пробовал переделывать и пробовать различные соглашения об именах, но в конце концов это было http://www.postgresql.org/message-id/[email protected]gov.au, которые меня отсортировали это было похоже на большой щелчок переключателя. chown 777 на ваших акциях и групповом менеджменте был важной кривой обучения, но, часы, которые я потратил на это, получат награды по линии... Любящий Ubuntu, любящий жизнь и любящий дух с открытым исходным кодом, но это может быть просто лишение сна ногами... ЭТО РАБОТАЕТ