使用 COPY 命令将数据从 JSON 文件复制到 Redshift
Posted
技术标签:
【中文标题】使用 COPY 命令将数据从 JSON 文件复制到 Redshift【英文标题】:Copy data from a JSON file to Redshift using the COPY command 【发布时间】:2014-12-05 10:08:13 【问题描述】:我正在尝试使用COPY
命令和JSONPath
将JSON 文件加载到Redshift。据我了解,对于 JSON 文件中的每条记录,COPY
命令都会为 SQL 生成一条记录。
我需要从 JSON 中的一条记录生成 多个 记录到 SQL,但我不清楚如何做到这一点。
这是一个例子。假设我们有以下 JSON 文件:
"id": 1,
"value": [1, 2, 3, 4],
"other": "ops"
,
"id": 2,
"value": [5, 6, 7, 8]
我想生成以下行以存储在 SQL 中:
id value
1 1
1 2
1 3
1 4
2 5
2 6
2 7
2 8
JSONPath
文件应该是什么样的?是否可行?
在related SO post 中,解决方案是在加载到 Redshift 之前以某种方式生成具有正确模式的数据。我可以预处理 JSON 文件以某种方式将其展平并将其存储回 S3。但这会使事情复杂化很多。
另一个相关问题是,如果一条记录中缺少一个字段(例如上述示例的第二条记录中的"other"
字段),我该如何设置默认值?
【问题讨论】:
【参考方案1】:您不能在复制命令中执行转换。使用 ETL 工具而不是直接复制到 RedShift。使用 JSON 格式后,默认值将根据表 DDL 分配。
【讨论】:
以上是关于使用 COPY 命令将数据从 JSON 文件复制到 Redshift的主要内容,如果未能解决你的问题,请参考以下文章
如何从 SQL 脚本执行 AWS S3 到 Redshift Copy 命令?