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



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

当我试图从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 eurasia1.csv或chmod a+Reurasia1.csv),并且我还更改了用户权限:

ALTER USER postgres WITH SUPERUSER; #where postgres is my user

然而,我仍然会遇到同样的错误。我还试图手动更改pgAdmin的权限,但似乎已经授予了avery权限。我在Mac Os上工作,使用PostGreSQL 9.2.4。

有什么建议吗?感谢

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

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

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

  2. 如果出于自动化/存储过程的考虑而在服务器端进行操作,那么这很少是一场胜利,因为您将事务性和非事务性效果结合在一起。COPY TO STDOUT和COPY FROM STDIN没有这些问题。(例如,您不必怀疑inode的atime是否真的意味着文件得到了正确处理)。

最新更新