PostgreSQL - 不一致的COPY权限错误

问题描述:

我在Windows 7,32位机器上使用EnterpriseDB pgAdmin III(v.1.12.1)与远程Linux服务器上的PostgreSQL数据库一起使用。我以用户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,用户postgres,用\选项尝试,但无法写入任何文件 – 2013-04-24 06:38:11

我认为你的postgres用户仍然无法访问你的文件。

您是否尝试过下列命令?

CHOWN postgres的/var/lib/pgsql/data/file.csv

CHMODü+ R /var/lib/pgsql/data/file.csv

的问题是访问权限线槽目录到文件。例如,Postgres用户无权访问您的主文件夹。答案是使用一个文件夹,所有用户都可以访问/ tmp,或者创建一个具有正确权限的文件夹,这样任何用户都可以访问/读取/写入用户共享文件夹。

+0

这是关于该主题的最佳答案。解决了我的问题。 – Digao 2017-03-17 11:52:56

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

通知书副本之前反斜杠,当你回来运行它削减它与用户运行权限其他明智的,它只是运行作为邮政局长该文档中弃用为最新版本的PG 的:|,无论如何,这可能会为你做的伎俩。

+0

它不工作varun – 2013-04-24 06:38:28

+0

我可能需要知道更多从你回答有用的东西,如果你只是需要移动东西尝试复制源文件在C:\ Users \ Public \ Documents – varun 2013-05-08 09:37:24