从CSV文件填充在PostgreSQL复制表时权限错误(permission error when

2019-11-02 09:11发布

我知道这个问题已经被别人提出的,但即使想以前的建议我仍然得到这个错误...

当我尝试填充从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。

任何建议? 谢谢

Answer 1:

最好的办法是改变和使用COPY FROM STDIN为避免不少的权限问题。

另外,您可以确保Postgres的用户可以访问该文件。 这种情况很少优于COPY FROM STDIN但一对夫妇的原因。

  1. COPY TO STDOUT可以想见破坏你的数据。 因为这涉及文件I / O在PostgreSQL中如果存在错误COPY FROM STDIN这可能是一个问题了。

  2. 如果你是在因为自动化/存储过程的关注服务器端做,这是很少赢,因为你是结合事务性和非事务性的影响。 COPY TO STDOUT和COPY FROM STDIN没有这些问题。 (例如,你不必怀疑inode的atime的是否真的意味着文件正确处理)。



文章来源: permission error when populating a table in PostGreSQL copying from a csv file