Postgresql 复制在漂亮打印的 JSON 上失败

Posted

技术标签:

【中文标题】Postgresql 复制在漂亮打印的 JSON 上失败【英文标题】:Postgresql copy fails on pretty printed JSON 【发布时间】:2016-02-10 23:29:21 【问题描述】:

我有一个包含 JSON 数据的文件。该文件是“漂亮打印”给我的(带有缩进等),但 PostgreSQL \copy 无法加载它。它给出了以下错误:

CONTEXT:  JSON data, line 1: 
COPY test_data, line 1, column data: ""

这个错误很容易重现。创建临时表:

 CREATE TEMP TABLE target(data jsonb); 

接下来创建 2 个文件。在 file1 中,输入以下文本:


    "catalog_name":"foo","sale_date":"2016-02-09T00:00:00"

在文件 2 中:

"catalog_name":"foo","sale_date":"2016-02-09T00:00:00"

\copy 在 file1 上失败,但在 file2 上成功。

根据jsonlint.com,它们都是有效的 json 字符串。

是否可以在不修改文件的情况下使用\copy 加载file2?

我使用的是 PostgreSQL 9.4.5

【问题讨论】:

我认为对于默认的 COPY 输入格式,您必须将每条记录保留在一行中:***.com/questions/24190039/… 【参考方案1】:

如果您的数据对换行不是很敏感,您可以尝试从JSON 输入中去除它们。

例如

cat input.json | tr -d '\n' > input2.json

使用新的输入文件应该可以工作。

【讨论】:

以上是关于Postgresql 复制在漂亮打印的 JSON 上失败的主要内容,如果未能解决你的问题,请参考以下文章

如何以 json 格式(双引号)漂亮地打印(人类可读的打印)Python dict? [复制]

如何使用 Go 漂亮地打印 JSON?

如何以漂亮的打印风格在 JSON 中编写数据框?

漂亮的打印json,但将内部数组保留在一行python

在 Apache Spark 中读取漂亮的打印 json 文件

Java 中的漂亮打印 JSON