Postgresql
copy 命令中的非標準標識符錯誤
希望能夠
COPY
在 PostgreSQL 中執行命令時在模式名稱中添加像“-”這樣的字元。有什麼辦法可以解決這個問題?psql -d postgres -c "\COPY (SELECT * FROM test-schema.tableName) TO data.csv DELIMITER ',' CSV"
ERROR: syntax error at or near "-"`enter code here` LINE 1: COPY ( SELECT * FROM test-schema.tableName ) TO STDOUT DELIMITER ',...
該錯誤與架構和表名的非法標識符
COPY
有關,並且與(也與您實際使用的psql meta-command )沒有直接關係。\copy
使用雙引號:"test-schema"."tableName"
(假設您將表註冊為
"tableName"
,而不是tablename
,這將是更可取的。)由於您也在 shell 中雙引號命令參數,您需要轉義添加的雙引號:
psql -d postgres -c "\copy (SELECT * FROM \"test-schema\".\"tableName\") TO data.csv DELIMITER ',' CSV;"
或者在 shell 中使用單引號並在字元串中使用美元引號:
psql -d postgres -c '\copy (SELECT * FROM "test-schema"."tableName") TO data.csv DELIMITER $$,$$ CSV;'
對於不需要雙引號的合法小寫標識符,您不會遇到任何這些問題。看: