2016-06-15 40 views
1

我有问题在redshift中使用copy命令加载JSON对象,我收到下面的JSON格式的文件,当尝试使用复制命令时失败,但是当我调整json文件到它的工作底部。这不是一个理想的解决方案,因为我不permiited修改JSON文件JSON文件不加载到redshift

这工作得很好:

{ 
    "id": 1, 
    "name": "Major League Baseball" 
} 
{ 
    "id": 2, 
    "name": "National Hockey League" 
} 

这不工作(注意额外的方括号)

[ 
{"id":1,"name":"Major League Baseball"}, 
{"id":2,"name":"National Hockey League"} 
] 

这是我的json路径

{ 
    "jsonpaths": [ 
     "$['id']", 
     "$['name']" 
    ] 
} 
+0

你能澄清一下这个问题吗? –

+0

我正在尝试将一些JSON复制到Redshift中,麻烦的是JSON包含“[”和逗号(请参阅上面的JSON)中突破加载这个数据的区域,我可以编写一个脚本来解决这个问题,但理想情况下,我想要避免这种情况 – godzilla

+0

每行的数据量都需要像第一个例子中那样是一个单独的json对象。 jsonpaths规范是一个列表,但它是一个对象内的列定位器列表。为了支持第二个例子,Redshift必须先解析大量文件,然后才能确定哪些值是一行的一部分。 – systemjack

回答

0

COPY命令的问题是它没有真的接受一个有效的JSON文件。相反,它预计在文档中有JSON-per-line这是shown,但没有明显提及。

因此,每一行应该是一个有效的JSON,但完整的文件不是。这就是为什么当你修改你的文件时,它是有效的。