2013-10-19 72 views
33

計算機:Mac OS X的版本10.8 數據庫:Postgres的Postgres的錯誤:無法讀取打開文件:權限被拒絕

嘗試導入CSV文件到Postgres的。

​​

然後我試圖

$> chown postgres /users/darchcruise/desktop/items_ordered.csv 
chown: /users/darchcruise/desktop/items_ordered.csv: Operation not permitted 

最後,我想

$> ls -l 
-rw-r--r-- 1 darchcruise staff  1016 Oct 18 21:04 items_ordered.csv 

任何幫助,非常感謝!

回答

11
chmod a+rX /users/darchcruise/ /users/darchcruise/desktop /users/darchcruise/desktop/items_ordered.csv 

這將改變您的文件夾的訪問權限。請注意,每個人都可以閱讀你的文件。 您不能使用chown作爲沒有管理權限的用戶。 另請考慮學習umask以簡化共享文件的創建。

+0

嗨,一小撮班輪將爲你做這項工作: a ='pwd'; NumOfSlashes = $((''echo $ a | sed's/[^ /] // g'| wc -c ' - 1)); for((i = 1; i <= $ NumOfSlashes; i ++));做chmod a + rX $ a; a ='dirname $ a'; done; – Roy

82

假設psql命令行工具,您可以使用\copy而不是copy

\copy打開文件和飼料的內容到服務器,而copy告訴服務器打開的文件本身並讀取它,這可能是有問題的權限,明智的,甚至是不可能的,如果客戶端和服務器上使用不同的機器上運行沒有文件共享之間。

在引擎蓋下,\copy實現爲COPY FROM stdin並且接受與服務器端COPY相同的選項。

-3

可能是您通過連接遠程主機使用pgadmin,然後U正試圖從您的系統更新,但它在遠程系統的文件系統中搜索該文件...其面向我所面對的錯誤可能是它也適用於您檢查它

30

將CSV文件複製到/ tmp

對我來說,這解決了這個問題。

2

如果你有pgAdmin並且很好的使用GUI,另一種方法是在模式表中右鍵單擊希望導入文件的表格並選擇「導入」瀏覽計算機該文件,選擇您的文件的類型,您希望將數據歸入的列,然後選擇導入。

這是使用pgAdmin的第三和9.4版本的PostgreSQL

5

的我,當我試圖將數據從遠程服務器導出到本地磁盤的問題做。我沒有意識到SQL copy實際上是在服務器上執行的,並且它試圖寫入服務器文件夾。相反,正確的做法是使用\copy這是psql命令,它會按我的預期寫入本地文件系統。 http://www.postgresql.org/message-id/[email protected]om

也許這對其他人也許有用。

0

對我來說,它的工作,以簡單地加sudo(或以root身份運行)爲chown命令:

須藤Postgres的CHOWN /用戶/ darchcruise /臺式機/ items_ordered。CSV

1

複製成CSV文件/ tmp文件夾

文件中COPY命令裏面的讀取或不是由客戶端應用程序直接由服務器寫入的。因此,它們必須駐留在數據庫服務器計算機上,或者可以訪問,而不是客戶端。它們必須可由PostgreSQL用戶(服務器運行的用戶標識)訪問,並且可讀寫,而不是客戶端。命名文件的COPY只允許數據庫超級用戶使用,因爲它允許讀取或寫入服務器有權訪問的任何文件。

相關問題