0

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

当我尝试填充从 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 的权限,但似乎已经赋予了每个权限。我正在使用 Mac Os,并且正在使用 PostGreSQL 9.2.4。

有什么建议吗?谢谢

4

1 回答 1

0

最好的选择是更改和使用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 是否实际上意味着文件已正确处理)。

于 2013-11-09T13:09:56.760 回答