无需脚本:如何将超20GB数据追加至已有同结构DynamoDB表?
如何用DMS将S3中的CSV数据追加到已有同结构DynamoDB表
核心配置思路
DMS默认会创建新表,但通过修改目标端点的连接属性,可以强制将数据追加到已有表,全程无需编写脚本,适合20GB以上的大体积数据迁移。
步骤1:配置S3源端点
- 创建S3类型的源端点,在额外连接属性中指定CSV格式参数,示例如下:
根据你的实际CSV格式调整分隔符、是否有表头、引号转义符等参数。delimiter=,;headerRowPresent=true;quoteCharacter=";escapeCharacter=\ - 确保DMS使用的IAM角色拥有S3 bucket的
s3:GetObject和s3:ListBucket权限。
步骤2:配置DynamoDB目标端点
- 创建DynamoDB类型的目标端点,直接填写已有目标表的名称。
- 在额外连接属性中添加关键参数,覆盖DMS的默认建表行为:
这个参数告诉DMS将数据追加到已有表,而非创建新表或覆盖数据。dynamodb:overwriteBehavior=append - 确保IAM角色拥有目标DynamoDB表的
dynamodb:PutItem权限。
步骤3:创建并配置迁移任务
- 任务类型选择迁移现有数据(无需持续复制,因为是一次性从S3导入)。
- 映射规则设置:
- 如果CSV字段名和DynamoDB表属性名完全匹配,使用默认的“选择全部表”映射即可。
- 如果字段名有差异,在映射规则中添加字段映射,手动关联源CSV字段和目标表属性。
- 任务设置中,根据目标DynamoDB表的吞吐量配置,调整迁移任务的读写速率上限,避免触发表的限流。例如,设置
TargetTablePrepMode=DO_NOTHING,防止DMS修改目标表的结构。
步骤4:测试与启动任务
- 先截取一小部分CSV数据放在测试S3路径,创建测试任务验证数据是否正确追加到目标表,检查字段类型、主键是否匹配。
- 测试通过后,切换到完整的CSV数据路径启动正式任务,通过DMS控制台监控迁移进度,查看日志排查异常(如主键冲突、格式错误)。
关键注意事项
- 确保CSV数据的字段类型与目标DynamoDB表属性类型完全一致(如数字字段不能是带引号的字符串),否则会导致导入失败。
- 若CSV包含主键字段,需提前清理与目标表重复的主键数据——使用
append模式时,主键冲突会触发任务报错;如果需要覆盖同主键数据,可将overwriteBehavior改为upsert。 - 大体积数据迁移时,可开启DMS的任务暂停/恢复功能,避免中途中断需重新执行。
内容的提问来源于stack exchange,提问作者ali tauqeer
相关产品推荐
相关产品推荐

