[英]permission error when populating a table in PostGreSQL copying from a csv file
我知道其他人已經提出過這個問題,但是即使嘗試以前的建議,我仍然會遇到此錯誤...
當我嘗試填充從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。
有什么建議嗎? 謝謝
最好的選擇是更改並使用COPY FROM STDIN
因為這樣可以避免很多權限問題。
另外,您可以確保postgres用戶可以訪問該文件。 但是,出於以下幾個原因,這很少比COPY FROM STDIN
更好。
COPY TO STDOUT
可能會破壞您的數據。 因為如果COPY FROM STDIN
中存在錯誤,則這涉及PostgreSQL的文件I / O,這也可能是一個問題。
如果您出於自動化/存儲過程的考慮而在服務器端進行此操作,那么這很少會是一個成功,因為您將事務性和非事務性效果結合在一起。 復制到標准輸出和從標准輸入復制沒有這些問題。 (例如,您不必懷疑inode的時間是否實際上意味着文件已正確處理)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.