复制 json 文件时出现 Amazon Redshift 错误 - JSONPath 格式无效:成员不是对象

Posted

技术标签:

【中文标题】复制 json 文件时出现 Amazon Redshift 错误 - JSONPath 格式无效:成员不是对象【英文标题】:Amazon Redshift error while copying json file - Invalid JSONPath format: Member is not an object 【发布时间】:2015-10-02 02:40:22 【问题描述】:

我正在尝试将 JSON 文件复制到 Redshift,但不断收到错误消息“无效的 JSONPath 格式:成员不是对象。”

问题似乎是因为“[”和“]”作为 JSON 文件中的第一个和最后一个字符存在。介于两者之间的所有其他内容都确认为标准 JSON 格式。当我修改文件并删除这两个字符时,表格加载顺利进行。

文件是开发者直接提供的,我没有说服他改变格式的影响力。所以我唯一的选择是以某种方式告诉 COPY 命令忽略 JSON 文件开头和结尾的这两个字符。

感谢小组的任何建议/帮助。

【问题讨论】:

【参考方案1】:

COPY 命令的问题在于它并不真正接受有效的 JSON 文件。相反,它期望 JSON-per-line 在文档中为 shown,但未明确提及。

因此,每一行都应该是有效的 JSON,但完整的文件不是。

【讨论】:

【参考方案2】:

到目前为止,Redshift Copy 还没有很多 JSON 功能,但您是否尝试过使用 JSONPaths 文件? http://docs.aws.amazon.com/redshift/latest/dg/r_COPY_command_examples.html#r_COPY_command_examples-copy-from-json

如果这不起作用并且您无法更改源文件格式,请在复制之前包含另一个步骤并使用一些文件转换(如果您使用某些 ETL 工具)或 Linux 函数从文件。

【讨论】:

感谢您抽出宝贵的时间帕拉丁。 JSONpaths 文件似乎仅有助于将列名与对象名匹配。我必须参考的 JSON 文件是 API 转储。我正在考虑学习 Python,以便解析 JSON 文件。但不确定如何使用脚本从 Amazon S3 中提取数据并将其放在数据库或 redshift 上。不过还是谢谢你的确认。我认为你的回答很有帮助。 如果您想使用 Python 连接到 S3/Redshift,您始终可以使用适用于 Python 的 AWS 开发工具包(例如,Boto 库非常适合大多数用例)。

以上是关于复制 json 文件时出现 Amazon Redshift 错误 - JSONPath 格式无效:成员不是对象的主要内容,如果未能解决你的问题,请参考以下文章

尝试将 JSON 文件展平为 CSV 时出现错误消息

使用预签名 URL 将文件上传到 Amazon S3 时出现 CORS 错误

在 Heroku 和 Amazon S3 上的生产 Rails/Vue 应用程序中加载字体时出现 CORS 错误

运行 Amazon S3 示例时出现 Amazon AWS 403 InvalidAccesskey 错误

服务模型时出现 Amazon Sagemaker ModelError

将图像上传到 Amazon S3 时出现 NotAuthorizedException