通过psql COPY导入具有json值的csv(存在转义问题)

时间:2018-09-18 08:54:44

标签: json postgresql csv psql

我正在尝试使用COPY命令将csv文件导入postgres中的表。我有一列是json数据类型的问题。我尝试使用美元($$ ... $$)docu_4.1.2.2来转义csv中的json数据。 这是csv的第一行:

3f382d8c-bd27-4092-bd9c-8b50e24df7ec;370038757|PRIMARY_RESIDENTIAL;$${"CustomerData": "{}", "PersonModule": "{}"}$$

这是用于导入的命令:

 psql -c "COPY table(id, name, details) FROM '/path/table.csv' DELIMITER ';' ENCODING 'UTF-8' CSV;"

这是我得到的错误:

ERROR:  invalid input syntax for type json
DETAIL:  Token "$" is invalid.
CONTEXT:  JSON data, line 1: $...
COPY table, line 1, column details: "$${CustomerData: {}, PersonModule: {}}$$"

如何使用COPY转义/导入json值?我应该放弃使用pg_loader之类的东西吗?谢谢

1 个答案:

答案 0 :(得分:0)

如果无法导入JSON数据,请尝试以下设置-即使对非常复杂的数据,这也对我有用:

COPY "your_schema_name.yor_table_name" (your, column_names, here) 
FROM STDIN 
WITH CSV DELIMITER E'\t' QUOTE '\b' ESCAPE '\';
--here rows data
\.