2016-06-15 38 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,但完整的文件不是。這就是爲什麼當你修改你的文件時,它是有效的。