如何从修改后的JSON备份向DynamoDB表批量添加数据?
简便实现方案
方案1:用AWS CLI批量写入
你的JSON格式刚好适配DynamoDB的批量写入规范,只需要简单整理格式后用CLI命令导入:
步骤1:转成批量请求格式
写个简单的Python脚本把你的单行JSON转换成batch-write-item要求的结构,同时自动拆分25条为一个批次(DynamoDB批量操作的上限):
import json # 目标表名 target_table = "TableB" input_file = "你修改后的文件.json" output_base = "batch_" batch_size = 25 # 初始化批次数据 current_batch = [] batch_index = 0 with open(input_file, "r") as f: for line_num, line in enumerate(f): # 解析每行的Item item = json.loads(line)["Item"] current_batch.append({"PutRequest": {"Item": item}}) # 达到批次上限就写入文件 if len(current_batch) == batch_size: batch_data = {"RequestItems": {target_table: current_batch}} with open(f"{output_base}{batch_index}.json", "w") as bf: json.dump(batch_data, bf) current_batch = [] batch_index += 1 # 处理剩余的不足25条的数据 if current_batch: batch_data = {"RequestItems": {target_table: current_batch}} with open(f"{output_base}{batch_index}.json", "w") as bf: json.dump(batch_data, bf)
步骤2:执行导入
用AWS CLI循环处理所有批次文件:
# 遍历所有batch开头的JSON文件,逐个导入 for batch_file in batch_*.json; do aws dynamodb batch-write-item --request-items file://$batch_file done
方案2:控制台导入(适合大数据量)
如果文件多、数据量大,直接用DynamoDB控制台的导入功能更省心:
- 把所有修改后的JSON文件上传到AWS S3桶
- 打开DynamoDB控制台,找到TableB,点击「导入数据」
- 选择S3里的文件路径,输入格式选「DynamoDB JSON」,跟着向导一步步完成导入
注意点
- 确保你的AWS账号有TableB的写入权限,以及S3的读取权限(如果用方案2)
- 批量写入时如果遇到吞吐量限制,可以临时打开TableB的自动扩容,或者避开业务高峰操作
- 如果TableB里已有相同主键的数据,
PutRequest会直接覆盖,不想覆盖的话要提前处理主键或者修改脚本用UpdateRequest
内容的提问来源于stack exchange,提问作者Ezriel_S
相关产品推荐
相关产品推荐

