我正在尝试使用以下结构将一些json文件复制到Redshift中:
{
"data": [{
"attr1": "value1",
"attr2": "value2",
"attr3": "value3",
},
{
"attr1": "value4",
"attr2": "value5",
"attr3": "value6",
}]
}
数组元素的数量是可变的。
我尝试使用以下jsonpath,但它不起作用:
{
"jsonpaths": [
"$.data[*].attr1",
"$.data[*].attr2",
"$.data[*].attr3"
]
}
如果我使用以下jsonpath,它只加载数组中的第一个对象:
{
"jsonpaths": [
"$.data[0].attr1",
"$.data[0].attr2",
"$.data[0].attr3"
]
}
有办法做到这一点吗?
谢谢!
答案 0 :(得分:3)
您的数据结构不太对劲。对于jsonpaths加载Redshift实际上并不希望整个文件是一个json结构。每条记录都是自己的结构。所以没有逗号分隔记录。
每条记录的顶级元素可以是所有对象{}
或数组[]
,但记录是完整的json结构,并且由换行符而不是逗号分隔。查看this page以获取示例。
对于你的例子:
{"data": {
"attr1": "value1",
"attr2": "value2",
"attr3": "value3"
}}
{"data": {
"attr1": "value4",
"attr2": "value5",
"attr3": "value6"
}}
{"jsonpaths": ["$.data.attr1", "$.data.attr2", "$.data.attr3"]}
或只是:
{
"attr1": "value1",
"attr2": "value2",
"attr3": "value3"
}
{
"attr1": "value4",
"attr2": "value5",
"attr3": "value6"
}
{"jsonpaths": ["$.attr1", "$.attr2", "$.attr3"]}