这里需要你的专业知识!
我正在尝试加载JSON
文件(由JSON
转储生成)到redshift
使用复制命令,其格式如下,
[
{
"cookieId": "cb2278",
"environment": "STAGE",
"errorMessages": [
"70460"
]
}
,
{
"cookieId": "cb2271",
"environment": "STG",
"errorMessages": [
"70460"
]
}
]
我们遇到了错误- "无效的JSONPath格式:成员不是对象。"
当我试图摆脱方括号-[]并删除JSON
字典之间的","逗号分隔符时,它加载得很好。
{
"cookieId": "cb2278",
"environment": "STAGE",
"errorMessages": [
"70460"
]
}
{
"cookieId": "cb2271",
"environment": "STG",
"errorMessages": [
"70460"
]
}
但实际上大多数来自API的JSON
文件都有这种格式。我可以做字符串替换或正则表达式摆脱,和[],但我想知道是否有一个更好的方法来加载到redshift
无缝不修改文件。
将JSON数组转换为数组元素流的一种方法是将前者管道到jq '.[]'
中。输出被发送到stdout。
如果JSON数组在一个名为input的文件中。Json,那么以下命令将在stdout上生成数组元素的流:
$ jq ".[]" input.json
如果你想要jsonlines格式的输出,那么使用-c开关(即jq -c ......
)。
有关jq的更多信息,请参见https://stedolan.github.io/jq