2016-09-06 5 views
1

Я пытаюсь экспортировать свою Postgres таблицу в формат CSV на моем рабочем столе, и я получаю эту ошибку:Экспорт Postgres таблицы CSV

ERROR: could not open file "C:\Users\blah\Desktop\countyreport.csv" for writing: Permission denied
SQL state: 42501

Это мой запрос, который я считаю, это правильный синтаксис

COPY countyreport TO 'C:\\Users\\blah\\Desktop\\countyreport.csv' DELIMITER ',' CSV HEADER; 
+0

Возможный дубликат [Сохранить вывод PL/pgSQL из PostgreSQL в файл CSV] (http://stackoverflow.com/questions/1517635/save-pl-pgsql-output-from-postgresql-to-a-csv -file) – iainn

+0

Если вы запустите это в 'psql', вы хотите' \ copy' не 'copy' –

ответ

1

Согласно инструкции:

Files named in a COPY command are read or written directly by the server, not by the client application.

https://www.postgresql.org/docs/current/static/sql-copy.html

Общей ошибкой является мнение, что доступ к файловой системе будет принадлежать пользователю (клиенту), но это не так. Нормально запускать сервер postgresql как своего собственного пользователя. Поэтому действие, выполняемое сервером, будет выполняться в качестве другого пользователя ОС для клиента. Сервер обычно запускается как пользователь ОС postgres.

Предполагая, что вы используете сервер на своей локальной машине, самым простым способом исправить это было бы предоставление доступа postgres к вашему домашнему каталогу или рабочему столу. Это можно сделать, изменив параметры безопасности Windows в домашнем каталоге.

Прежде чем вы это сделаете ... Остановитесь и подумайте. Это то, что вы ищите? Если сервер находится в разработке, он будет всегда запускаться на машине пользователя. Если нет, то вам может понадобиться использовать COPY для записи на stdout. See the manual for information on this.