如何将包含 JSON 的 CSV 文件导入 postgresql?
How can I import a CSV file containing JSON into postgresql?
我正在尝试导入此 CSV 文件:
HEADER
"{
""field1"": ""123"",
""field2"": ""456""
}"
"{
""field1"": ""789"",
""field2"": ""101""
}"
进入我的 Postgres table。
但是,\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,并且有 header 行。
\copy my_table(my_text) from 'my_file.csv' csv header
按照其他答案的建议更改转义字符是不必要的,实际上会破坏事情。您的数据将加载,但将无效 JSON.
您可能希望此列类型为 JSON 或 JSONB,而不是文本。这将自动将您的数据验证为有效 JSON 数据,并且在 JSONB 的情况下将使将来对其的解析更快。
我正在尝试导入此 CSV 文件:
HEADER
"{
""field1"": ""123"",
""field2"": ""456""
}"
"{
""field1"": ""789"",
""field2"": ""101""
}"
进入我的 Postgres table。
但是,\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,并且有 header 行。
\copy my_table(my_text) from 'my_file.csv' csv header
按照其他答案的建议更改转义字符是不必要的,实际上会破坏事情。您的数据将加载,但将无效 JSON.
您可能希望此列类型为 JSON 或 JSONB,而不是文本。这将自动将您的数据验证为有效 JSON 数据,并且在 JSONB 的情况下将使将来对其的解析更快。