如何解决如何将包含 JSON 的 CSV 文件导入 postgresql?
我正在尝试导入此 CSV 文件:
HEADER
"{
""field1"": ""123"",""field2"": ""456""
}"
"{
""field1"": ""789"",""field2"": ""101""
}"
进入我的 Postgres 表。
但是,似乎 \copy my_table(my_text) from 'my_file.csv'
命令正在为文件的每一行创建一行。
这就是我得到的:
my_text
-----------------------------------------------------
HEADER
"{
""field1"": ""123"",""field2"": ""456""
}"
"{
""field1"": ""789"",""field2"": ""101""
}"
(9 rows)
以及我的期望:
{""field1"": ""123"",""field2"": ""456""}
{""field1"": ""789"",""field2"": ""101""}
(2 rows)
解决方法
转义新行可能会奏效:
\copy my_table(my_text) from my_file.csv csv header escape E'\n' quote '"'
,
\copy
的默认格式是“文本”格式,而不是“csv”格式。您所要做的就是告诉您的 \copy
使用 csv,并且有一个标题行。
\copy my_table(my_text) from 'my_file.csv' csv header
如其他答案所暗示的那样更改转义字符是不必要的,实际上会破坏事情。您的数据将加载,但不是有效的 JSON。
您可能希望将此列设为 JSON 或 JSONB,而不是文本。这将自动验证您的数据是否为有效的 JSON 数据,并且在 JSONB 的情况下将使未来的解析速度更快。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。