Postgresql
PostgreSQL PSQL 客戶端命令和新行 (COPY)
錯誤資訊與使用 COPY 的超級使用者相同。這些文件與 postgres 伺服器位於同一台伺服器上。看到很多類似的文章,但沒有一個回答我的問題。
\copy table_name from '/path/to/csv/file.csv' with format csv, header true ; ERROR: syntax error at or near "format"
是否與括號綁定。仔細閱讀 postgres版本 10的手冊。沒有幫助。我一定遺漏了一些小問題,請指出。
psql“元命令”
psql 中以反斜杠 (
\
) 開頭的命令稱為“元命令”,它們不遵循通常的分號規則,而是由換行符終止。一小段摘自man psql
解析參數在行尾或找到另一個未引用的反斜杠時停止。未加引號的反斜杠被視為新元命令的開始。特殊序列
\\
(兩個反斜杠)標記參數的結尾並繼續解析 SQL 命令(如果有)。這樣 SQL 和 psql 命令可以在一行中自由混合。但無論如何,元命令的參數不能超出行尾。手冊頁中對此進行了更多說明*。*是的,這很奇怪而且很煩人。這是因為從歷史上看,psql 命令是一種元命令,您希望在不中斷正在建構的任何查詢的情況下執行,例如 \d 以查看表的列。但是對於像它這樣的偽語句
\copy
會變得混亂。這裡發生了什麼事
在您的情況下,發生的事情是
psql
執行第一行,然後將第二行發送到 postgres 伺服器,該伺服器將其辨識WITH
為有效的 CTE 語句令牌,然後被FORMAT
.你想要的是,
\copy table_name from '/path/to/csv/file.csv' with format csv, header true