漂亮打印的 Postgresql 复制失败 JSON
Postgresql copy fails on pretty printed JSON
我有一个包含 JSON 数据的文件。该文件已提供给我 "pretty printed"(带有缩进等),但 PostgreSQL \copy
无法加载它。它给出以下错误:
CONTEXT: JSON data, line 1: {
COPY test_data, line 1, column data: "{"
这个错误很容易重现。创建临时 table:
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
如果您的数据对换行不是很敏感,您可以尝试从 JSON
输入中去除它们。
例如
cat input.json | tr -d '\n' > input2.json
使用新的输入文件应该可以。
我有一个包含 JSON 数据的文件。该文件已提供给我 "pretty printed"(带有缩进等),但 PostgreSQL \copy
无法加载它。它给出以下错误:
CONTEXT: JSON data, line 1: {
COPY test_data, line 1, column data: "{"
这个错误很容易重现。创建临时 table:
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
如果您的数据对换行不是很敏感,您可以尝试从 JSON
输入中去除它们。
例如
cat input.json | tr -d '\n' > input2.json
使用新的输入文件应该可以。