如何通过boto3将JSON拆分后的数组上传至AWS DynamoDB
解决方案
方法一:上传脚本内直接预处理数据
读取JSON后即时处理publisher字段,再上传至DynamoDB:
import json import boto3 # 初始化DynamoDB资源与目标表 dynamodb = boto3.resource('dynamodb') table = dynamodb.Table('你的目标表名') # 读取原始JSON数据 with open('data.json', 'r', encoding='utf-8') as f: items = json.load(f) # 遍历处理每个条目 for item in items: # 检查publisher字段存在且为字符串类型 if 'publisher' in item and isinstance(item['publisher'], str): # 按竖线分割为数组 item['publisher'] = item['publisher'].split('|') # 可选:过滤空元素(若存在空字符串分割情况) # item['publisher'] = [pub for pub in item['publisher'].split('|') if pub] # 批量上传(数据量大时用batch_writer提升效率) with table.batch_writer() as batch: for item in items: batch.put_item(Item=item)
方法二:预处理JSON文件后上传
先生成处理后的JSON文件,再用原脚本上传:
import json # 读取原始数据 with open('data.json', 'r', encoding='utf-8') as f: items = json.load(f) # 处理publisher字段 for item in items: if 'publisher' in item and isinstance(item['publisher'], str): item['publisher'] = item['publisher'].split('|') # 可选过滤空元素 # item['publisher'] = [pub for pub in item['publisher'].split('|') if pub] # 写入处理后的文件 with open('processed_data.json', 'w', encoding='utf-8') as f: json.dump(items, f, ensure_ascii=False, indent=2)
之后直接用原脚本读取processed_data.json上传即可。
关键注意点
- 确保DynamoDB表中
publisher字段的属性类型配置为List,否则会因类型不匹配报错。 - 若存在空字符串分割出
['']的情况,可通过列表推导式过滤空元素。
内容的提问来源于stack exchange,提问作者Nicolaesse
相关产品推荐
相关产品推荐

