2012-02-13 38 views
3

我在Windows 7,32位機器上使用EnterpriseDB pgAdmin III(v.1.12.1)與遠程Linux服務器上的PostgreSQL數據庫一起使用。我以用戶postgres的身份登錄,它允許我訪問$ PGDATA目錄(在這種情況下,它在這裏找到:/ var/lib/pgsql/data /)PostgreSQL - 不一致的COPY權限錯誤

如果我通過終端,運行psql,並使用\copy命令將csv文件中的數據導入到新創建的表中,我沒有任何問題。

但是,如果我在pgAdmin中,則使用COPY命令將csv文件中的數據導入到新創建的表中。

COPY table_name FROM '/var/lib/pgsql/data/file.csv' 
WITH DELIMITER AS ',' csv header 

有時能正常工作,其他時候我收到權限錯誤:

ERROR: could not open file '/var/lib/pgsql/data/file.csv" for reading: Permission denied SQL state: 42501

它是被弄糊塗,我的錯誤的不一致。出現錯誤時,我將文件權限更改爲644 - 777之間的任何位置,但不起作用。我也嘗試將文件移動到其他文件夾,例如,var/tmp /,也沒有效果。

任何想法?

+0

得到同樣的問題,更改權限爲777,用戶postgres,用\選項嘗試,但無法寫入任何文件 – 2013-04-24 06:38:11

回答

0

我認爲你的postgres用戶仍然無法訪問你的文件。

您是否嘗試過下列命令?

CHOWN postgres的/var/lib/pgsql/data/file.csv

CHMODü+ R /var/lib/pgsql/data/file.csv

5

的問題是訪問權限線槽目錄到文件。例如,Postgres用戶無權訪問您的主文件夾。答案是使用一個文件夾,所有用戶都可以訪問/ tmp,或者創建一個具有正確權限的文件夾,這樣任何用戶都可以訪問/讀取/寫入用戶共享文件夾。

+0

這是關於該主題的最佳答案。解決了我的問題。 – Digao 2017-03-17 11:52:56

0
Try \COPY table_name FROM '/var/lib/pgsql/data/file.csv' 
WITH DELIMITER AS ',' csv header 

通知書副本之前反斜槓,當你回來運行它削減它與用戶運行權限其他明智的,它只是運行作爲郵政局長該文檔中棄用爲最新版本的PG 的:|,無論如何,這可能會爲你做的伎倆。

+0

它不工作varun – 2013-04-24 06:38:28

+0

我可能需要知道更多從你回答有用的東西,如果你只是需要移動東西嘗試複製源文件在C:\ Users \ Public \ Documents – varun 2013-05-08 09:37:24