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

时间:2013-08-14 10:57:09

标签: 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: 42501

如前所述,在这些情况下,我更改了文件的权限(chmod 711 eurasia1.csv或chmod a + r eurasia1.csv),我还更改了用户权限:

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

但是,我仍然得到同样的错误。 我还试图从pgAdmin手动更改权限,但似乎已经给出了avery特权。 我正在使用Mac Os,我正在使用PostGreSQL 9.2.4。

有什么建议吗?感谢

1 个答案:

答案 0 :(得分:0)

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

或者,您可以确保postgres用户可以访问该文件。这有点比COPY FROM STDIN好,但有几个原因。

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

  2. 如果由于自动化/存储过程问题而在服务器端进行此操作,这很少会成为胜利,因为您要结合事务和非事务性效果。复制到STDOUT并从STDIN复制没有这些问题。 (例如,您不必怀疑inode的atime实际上是否意味着文件已正确处理)。