如何导出DynamoDB数据或转换JSON适配batch-write-item导入?
DynamoDB 批量导入JSON格式问题解决
一、正确导出数据以兼容批量导入
- 使用AWS CLI直接导出并转换为兼容格式:
执行以下命令,将源表数据导出并直接生成batch-write-item可识别的JSON:aws dynamodb scan --table-name 源表名 --output json | jq '{目标表名: [.Items[] | {PutRequest: {Item: .}}]}' > 可导入文件.json - 通过控制台导出到S3:
在DynamoDB控制台选择目标表,进入导出到S3功能,格式选择DynamoDB JSON,导出后的文件无需额外转换即可用于批量导入。
二、转换现有第三方JSON文件
如果已有数组格式的JSON(如[{"__typename": "Article", ...}, ...]),需按以下步骤转换:
- 明确DynamoDB数据类型:批量导入要求每个字段必须带类型标记,例如字符串用
{"S": "值"},数字用{"N": "123"},布尔值用{"BOOL": true}。 - 使用jq工具批量转换:
假设目标表名为Articles,执行以下命令完成转换(根据实际字段类型调整类型标记):jq '{Articles: [.[] | {PutRequest: {Item: { "__typename": {"S": .__typename}, "标题字段": {"S": .标题字段}, "阅读量字段": {"N": (.阅读量字段 | tostring)} }}}]}' 原文件.json > 转换后文件.json - 验证格式:转换后的JSON需符合以下结构:
{ "目标表名": [ { "PutRequest": { "Item": { "字段1": {"S": "内容"}, "字段2": {"N": "123"} } } } ] }
内容的提问来源于stack exchange,提问作者khteh
相关产品推荐
相关产品推荐

