Postgresql

PostgreSQL 導入 CSV 文件導致語法錯誤

  • March 8, 2022

我正在嘗試通過“COPY”命令將 CSV 文件導入數據庫;但是,我得到了(看起來很常見的)錯誤,我需要成為超級使用者並且應該改用“\copy”。但是,當使用 \copy 時,我得到一個語法錯誤:

ERROR:  syntax error at or near "\"
LINE 1: \copy

插入符號指向“\”。這是我的查詢:

\copy tablename(column2, column3, column4, column5) from '/home/uploads/data.csv' WITH DELIMITER ',' CSV HEADER'

我嘗試了“複製”和“\複製”。第一個給我一個超級使用者錯誤,後者給我那個語法錯誤。關於如何解決它的任何想法?讓它起作用?

我正在通過 myPgAdmin 的 sql 輸入欄位執行命令。

我唯一的另一個問題是關於通過 tablename(column2, column3 等導入列。這是正確的語法嗎?

\copy是一個psql(命令行)命令。它不是正常的 SQL 命令。

您將需要使用 COPY 代替(但這需要文件存在於數據庫伺服器上)

請參閱COPY 的 postgres 手冊

在 pgAdmin(或您通過腳本或其他數據庫連接傳遞的 sql 字元串)中,您只需使用不帶“\”前綴的 COPY。

所以輸入類似: COPY tablename....

您需要確保您具有執行該命令的相關權限,因此在這種情況下,您需要能夠登錄到數據庫並具有對“tablename”的寫入權限。Postgres 還需要能夠訪問該文件,因此路徑 /home/uploads/ 應該可以在數據庫伺服器上訪問,並且 postgres 使用者應該能夠讀取該文件 - 檢查文件和目錄的權限。

引用自:https://dba.stackexchange.com/questions/23036