如何將數據從文件複製到SQL中的表中?我在Macbook上使用pgAdmin3。如何在SQL中將數據從文件複製到表中?
表名是tutor,文件名是tutor.rtf。
我用下面的查詢:?
COPY tutor
FROM /Users/.../tutor.rtf
WITH DELIMITER ',';
,但得到的錯誤拒絕「權限」
該文件沒有鎖定那麼,你如何解決這個問題,或者有沒有其他的更快辦法從文件中的數據複製到表除了INSERT INTO ... VALUE();
?
如何將數據從文件複製到SQL中的表中?我在Macbook上使用pgAdmin3。如何在SQL中將數據從文件複製到表中?
表名是tutor,文件名是tutor.rtf。
我用下面的查詢:?
COPY tutor
FROM /Users/.../tutor.rtf
WITH DELIMITER ',';
,但得到的錯誤拒絕「權限」
該文件沒有鎖定那麼,你如何解決這個問題,或者有沒有其他的更快辦法從文件中的數據複製到表除了INSERT INTO ... VALUE();
?
COPY
使用PostgreSQL服務器後端打開文件,所以它需要用戶postgresql的運行方式爲對該文件具有讀權限(針對COPY FROM
)。它還需要與INSERT
表相同的SQL級別訪問權限,但我懷疑它的文件許可權是讓你在這裏。
最可能的是postgres
或postgres_
(取決於您安裝PostgreSQL的方式)用戶不具有對/Users/somepath/tutor.rtf
或該文件的某個父目錄的讀訪問權限。
最簡單的解決方法是使用psql
的\copy
命令,使用客戶權限,而不是那些服務器讀取該文件,並使用相對於客戶端的當前工作目錄的路徑。該命令在PgAdmin-III中不可用。
較新的PgAdmin-III版本在表格上下文菜單中有導入命令。請參閱importing tables from file in the PgAdmin-III docs。這相當於psql
的\copy
命令,讀取具有PgAdmin-III應用程序訪問權限的文件。
或者您可以通過確保每個目錄從/Users
使用服務器端COPY
命令,直至somepath
擁有世界執行權限 - 這意味着用戶可以遍歷它,進入這個目錄,等等,但沒有r
無法列出其內容權利也是。然後將文件設置爲組postgres
,並確保它具有組讀取權限,或使其具有世界可讀性。
我的膝蓋反應反應是說:「請發佈'ls -l/Users /.../ tutor.rtf'的結果,這樣我們都可以看到文件具有適當的權限(因爲你說的文件沒有鎖定)「第二次看,你有一個點太多了嗎?或者你是否爲了簡潔而省略了完整的路徑?如果您對此帖子進行了更改,我會請求您粘貼原始路徑。 –