Postgresql复制在打印精美的JSON上失败
我有一个包含JSON数据的文件。给我的文件“打印得很好”(带有缩进等),但PostgreSQLPostgresql复制在打印精美的JSON上失败,json,postgresql,psql,postgresql-9.4,Json,Postgresql,Psql,Postgresql 9.4,我有一个包含JSON数据的文件。给我的文件“打印得很好”(带有缩进等),但PostgreSQL\copy无法加载它。它给出了以下错误: CONTEXT: JSON data, line 1: { COPY test_data, line 1, column data: "{" 这种错误很容易重现。创建临时表: CREATE TEMP TABLE target(data jsonb); 接下来创建2个文件。在文件1中,输入以下文本: { "catalog_name":"foo",
\copy
无法加载它。它给出了以下错误:
CONTEXT: JSON data, line 1: {
COPY test_data, line 1, column data: "{"
这种错误很容易重现。创建临时表:
CREATE TEMP TABLE target(data jsonb);
接下来创建2个文件。在文件1中,输入以下文本:
{
"catalog_name":"foo","sale_date":"2016-02-09T00:00:00"
}
在文件2中:
{"catalog_name":"foo","sale_date":"2016-02-09T00:00:00"}
\copy
在文件1上失败,但在文件2上成功
据了解,它们都是有效的json字符串
是否可以使用\copy
在不修改文件的情况下加载文件2
我使用的是PostgreSQL 9.4.5如果您的数据对换行符不太敏感,您可以尝试从
JSON
输入中删除它们
例如
cat input.json | tr -d '\n' > input2.json
使用新的输入文件应该有效。我认为您必须将每条记录保存在一行中,以使用默认的复制输入格式: