2012-02-13 3 views
3

Я использую EnterpriseDB pgAdmin III (версия 1.12.1) на 32-разрядной машине Windows 7 для работы с базами данных PostgreSQL на удаленном сервере Linux. Я зарегистрировался как пользователь postgres, который позволяет мне получить доступ к каталогу $ PGDATA (в данном случае он находится здесь:/var/lib/pgsql/data /)PostgreSQL - непоследовательные ошибки разрешения COPY

Если я запишусь на сервер через терминал, запустить psql и использовать команду \copy для импорта данных из файлов csv во вновь созданные таблицы, у меня нет проблем.

Однако, если я в pgAdmin, я использую команду COPY для импорта данных из файлов csv во вновь создаваемые таблицы.

COPY table_name FROM '/var/lib/pgsql/data/file.csv' 
WITH DELIMITER AS ',' csv header 

Иногда это работает отлично, в остальное время я получаю ошибку разрешений:

ERROR: could not open file '/var/lib/pgsql/data/file.csv" for reading: Permission denied SQL state: 42501

Это несоответствие ошибки, что сбивает с толку меня. Когда возникает ошибка, я изменяю разрешение файла в любом месте от 644 до 777, без эффекта. Я также пытаюсь переместить файл в другие папки, например, var/tmp /, также без эффекта.

Любые идеи?

+0

Получение одинаковой проблемы, изменение разрешения на 777, пользователь для отправки, попробовал с \ option тоже, но ничего не смог записать в файл –

ответ

0

Я думаю, что ваш пользователь postgres по-прежнему не имеет доступа к вашему файлу.

Вы пробовали следующие команды?

Chown Postgres /var/lib/pgsql/data/file.csv

CHMOD и + г /var/lib/pgsql/data/file.csv

5

Проблема заключается в права доступа корыта каталогов в файл. Например, пользователь Postgres не имеет доступа к вашей домашней папке. Ответ заключается в том, чтобы использовать папку, доступную всем пользователям, например/tmp, или создать ее с правильными разрешениями, чтобы любой пользователь мог получить доступ/прочитать/записать там, своего рода общую папку пользователей.

+0

, это лучший ответ по теме. Решила мою проблему. – Digao

0
Try \COPY table_name FROM '/var/lib/pgsql/data/file.csv' 
WITH DELIMITER AS ',' csv header 

Обратите внимание на обратную косую черту перед копированием, когда вы запустите его с обратной косой черты, работает с пользователем разрешения другим мудрым он просто работает как почтмейстера, который в документации является устаревшим для последних версий пг : |, в любом случае это может, вероятно, сделать трюк для ya.

+0

Это не работает varun –

+0

Мне, вероятно, нужно знать больше от вас, чтобы ответить на что-нибудь полезное, если вам просто нужно все перемещать, попробуйте скопировать исходный файл на C: \ Users \ Public \ Documents – varun

Смежные вопросы