在从csv文件复制PostGreSQL中填充表时出现权限错误

在从csv文件复制PostGreSQL中填充表时出现权限错误,postgresql,permissions,privileges,pgadmin,Postgresql,Permissions,Privileges,Pgadmin,我知道其他人已经提出了这个问题,但即使尝试了以前的建议,我仍然会得到这个错误 当我尝试从csv文件复制表格时,会出现权限错误 COPY Eurasia FROM '/Users/Oritteropus/Desktop/eurasia1.csv' CSV HEADER; ERROR: could not open file "/Users/Oritteropus/Desktop/eurasia1.csv" for reading: Permission denied SQL state: 425

我知道其他人已经提出了这个问题,但即使尝试了以前的建议,我仍然会得到这个错误

当我尝试从csv文件复制表格时,会出现权限错误

COPY Eurasia FROM '/Users/Oritteropus/Desktop/eurasia1.csv' CSV HEADER;

ERROR: could not open file "/Users/Oritteropus/Desktop/eurasia1.csv" for reading: Permission denied
SQL state: 42501
如前所述,在这些情况下,我更改了文件的权限(chmod 711 eurasa1.csv或chmod a+r eurasa1.csv),并且还更改了以下用户权限:

ALTER USER postgres WITH SUPERUSER; #where postgres is my user
然而,我仍然得到同样的错误。 我还试图手动更改pgAdmin的权限,但似乎已授予avery权限。 我正在使用Mac操作系统,我正在使用PostGreSQL 9.2.4


有什么建议吗?谢谢

最好的选择是更改并使用
从STDIN复制
,因为这样可以避免很多权限问题

或者,您可以确保postgres用户可以访问该文件。然而,出于几个原因,这很少比从STDIN复制更好

  • 复制到STDOUT
    可能会损坏您的数据。因为这涉及到PostgreSQL的文件I/O,如果
    COPY FROM STDIN
    中存在bug,这也可能是一个问题

  • 如果出于自动化/存储过程的考虑而在服务器端执行此操作,这很少是一个胜利,因为您将事务性和非事务性效果结合在一起。复制到STDOUT和从STDIN复制没有这些问题。(例如,您不必怀疑inode的atime实际上是否意味着文件得到了正确处理)


  • 检查此文件所属的用户和组该文件属于OriterOpus用户(计算机用户):-rwxr-xr-x@1 OriterOpus staff 390018694 25 Mag 05:54 eurasia1.csv该文件将由运行Postgres服务器的帐户读取。检查该帐户是否具有必要的权限,包括路径中的所有目录。我不确定我是否理解您的意思,我签入了“用户和组”的系统首选项,并将PostGreSQL设置为admin,我重新启动了计算机,但未做任何更改。这是你想要的吗?你说的“路径中的目录”是什么意思?好吧,我解决了,我必须给postgres用户对路径中每个文件夹的权限。