Permissions PostgreSQL-复制权限不一致错误

Permissions PostgreSQL-复制权限不一致错误,permissions,pgadmin,postgresql-8.4,Permissions,Pgadmin,Postgresql 8.4,我在Windows7的32位机器上使用EnterpriseDB pgAdmin III(v.1.12.1)来处理远程Linux服务器上的PostgreSQL数据库。我以用户postgres的身份登录,这允许我访问$PGDATA目录(在本例中,可以在这里找到它:/var/lib/pgsql/data/) 如果我通过终端登录到服务器,运行psql,并使用\copy命令将csv文件中的数据导入到新创建的表中,则没有问题 但是,如果我在pgAdmin中,我会使用COPY命令将数据从csv文件导入到新创建

我在Windows7的32位机器上使用EnterpriseDB pgAdmin III(v.1.12.1)来处理远程Linux服务器上的PostgreSQL数据库。我以用户postgres的身份登录,这允许我访问$PGDATA目录(在本例中,可以在这里找到它:/var/lib/pgsql/data/)

如果我通过终端登录到服务器,运行psql,并使用
\copy
命令将csv文件中的数据导入到新创建的表中,则没有问题

但是,如果我在pgAdmin中,我会使用COPY命令将数据从csv文件导入到新创建的表中

COPY table_name FROM '/var/lib/pgsql/data/file.csv' 
WITH DELIMITER AS ',' csv header
有时这很好,但有时我会遇到权限错误:

错误:无法打开文件“/var/lib/pgsql/data/file.csv”进行读取:权限被拒绝 SQL状态:42501

让我困惑的是错误的不一致性。出现错误时,我将文件权限更改为644-777之间的任意位置,但没有效果。我还尝试将文件移动到其他文件夹,例如var/tmp/,但也没有效果


有什么想法吗?

我想你的postgres用户仍然无法访问你的文件

你试过下面的命令了吗

chown postgres/var/lib/pgsql/data/file.csv


chmod u+r/var/lib/pgsql/data/file.csv

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

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

请注意复制之前的反斜杠,当您使用反斜杠运行它时,它会以用户权限运行,从另一个角度看,它只是以邮局主管的身份运行,而在文档中,对于pg的最新版本来说,这是不推荐的:|,无论如何,这可能会对您有所帮助。

遇到同样的问题,将权限更改为777,用户更改为postgres,也尝试了使用\选项,但无法在文件上写入任何内容我可能需要从您那里了解更多信息才能回答任何有用的问题,如果您只需要移动,请尝试复制源文件C:\Users\Public\Documents这是关于此主题的最佳答案。解决了我的问题。是的,复制了将文件保存到
/tmp
,并适当地调整了我从
语句复制的
副本。不确定这是否是一个生产准备好的策略,但对于我必须做的一次性工作来说效果非常好。谢谢!