使用 JSONPATHS 文件到 Redshift 的 JSON 文件 - 无效的 jsonpath 格式

Posted

技术标签:

【中文标题】使用 JSONPATHS 文件到 Redshift 的 JSON 文件 - 无效的 jsonpath 格式【英文标题】:JSON file to Redshift using JSONPATHS file - Invalid jsonpath format 【发布时间】:2020-03-18 18:38:10 【问题描述】:

尝试使用带有 JSONPATHS 文件的 Copy 将 JSON 文件从 s3 加载到 Redshift。该文件包含 N 条记录。

一次性加载整个集合会引发错误:

无效操作:无效的 JSONPath 格式。支持的符号是 'dot-notation' 和 'bracket-notation'

Json 路径:

"jsonpaths":
[
    "$.item[:].col1",
    "$.item[:].col2",
    "$.item[:].col3"
]

示例文件:

"item":
[
  
    "col1":"A",
    "col2":"b",
    "col3":"d"
  ,
  
    "col1": "123",
    "col2": "red",
    "col3": "456"
  
]

工作文件:-

 "jsonpaths":
[
    "$.item[0].col1",
    "$.item[0].col2",
    "$.item[0].col3"
]

我做错了什么导致这个错误?

【问题讨论】:

【参考方案1】:

根据documentation,有两种指定 JSONPath 的方法。一种是使用点记法,另一种是使用括号记法。

在此示例中,用户使用点表示法,但数组已使用冒号 (:) 进行索引。索引 JSON 数组元素的正确方法是使用数字。因此 JSONPath 文件的第二个示例有效。

【讨论】:

以上是关于使用 JSONPATHS 文件到 Redshift 的 JSON 文件 - 无效的 jsonpath 格式的主要内容,如果未能解决你的问题,请参考以下文章

AWS Data Pipeline DynamoDB 到 S3 到 Redshift,包括 JsonPaths

用于动态 json 文件的 Redshift JSONPaths 文件

JSONPaths 文件:解析 JSON 数组中包含的 JSON 对象

使用复制命令将 Json 文件加载到 redshift

使用多个清单文件从 S3 加载到 Redshift?

将 txt 文件复制到 Redshift