如何在AWS DMS任务映射中重命名列?规则验证通过但静默失败
解决方案
方案1:合并转换逻辑(最优)
你当前的核心需求是将contacts表的name字段值替换为SHA256哈希结果,完全可以省略「新增中间列→删除原列→重命名中间列」的三步流程,直接修改原有列的取值即可,调整后的映射规则如下:
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "mydb", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-target": "column", "object-locator": { "schema-name": "mydb", "table-name": "contacts", "column-name": "name" }, "rule-action": "transform", "expression": "hash_sha256($name)", "data-type": { "type": "string", "length": 255 } } ] }
该方案一步完成字段值转换,无额外列操作,从根源规避重命名规则不生效的问题。
方案2:修复现有重命名规则
如果确实需要保留原有三步的列操作逻辑,可以按以下要求调整配置:
- 确认DMS任务已开启转换规则应用于CDC阶段的配置,默认场景下重命名规则仅在全量初始化阶段生效,增量同步阶段不会触发。
- MySQL作为目标端时,重命名规则需要额外添加
old-value参数指定原列名,完整的第4条规则如下:
{ "rule-type": "transformation", "rule-id": "4", "rule-name": "4", "rule-action": "rename", "rule-target": "column", "object-locator": { "schema-name": "mydb", "table-name": "contacts", "column-name": "name_transformed" }, "value": "name", "old-value": "name_transformed" }
- 若任务已执行过首次同步,需先清空目标端
contacts表,避免原有列结构残留导致重命名冲突静默失败,调整配置后重启全量同步任务即可。
内容的提问来源于stack exchange,提问作者Nelfo
相关产品推荐
相关产品推荐

