需要帮助!-无法使用COPY命令加载JSON



这里需要你的专业知识!

我正在尝试加载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

最新更新