如何将包含 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)
iCMS 回答:如何将包含 JSON 的 CSV 文件导入 postgresql?

转义新行可能会奏效:

\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 的情况下将使未来的解析速度更快。

本文链接:https://www.f2er.com/123065.html

大家都在问