AWS DMS迁移任务使用MySQL表映射通配符时提示“未找到表”
解决AWS DMS迁移company_前缀数据库的匹配问题
问题原因
AWS DMS的表映射规则中,_是通配符(匹配任意单个字符),直接使用company_%会匹配所有以company开头、后跟任意单个字符的数据库(比如companyAtest),而非字面量company_前缀的库。而JSON格式中反斜杠需要双重转义,这是你之前转义失败的核心原因。
方案1:正确转义下划线的通配符匹配
使用双重反斜杠转义下划线,确保DMS将其识别为字面量字符,而非通配符。修改后的表映射规则如下:
{ "rule-type": "selection", "rule-id": "1", "rule-name": "Include all company_ prefixed schemas", "object-locator": { "schema-name": "company\\_%", "table-name": "%" }, "rule-action": "include" }
- 解析逻辑:JSON中的
\\_会被转换为\_,DMS识别后将_当作字面量,%匹配后续任意字符,精准命中所有company_开头的数据库。
方案2:使用正则表达式匹配(更直观)
DMS支持通过regex:前缀使用正则表达式,无需处理转义问题,更易维护:
{ "rule-type": "selection", "rule-id": "1", "rule-name": "Include all company_ prefixed schemas via regex", "object-locator": { "schema-name": "regex:^company_", "table-name": "%" }, "rule-action": "include" }
- 解析逻辑:
^company_表示匹配以company_开头的所有数据库名称,正则规则直接避免了通配符冲突问题。
验证步骤
- 在源RDS MySQL中执行命令,确认存在符合条件的数据库:
SHOW DATABASES LIKE 'company\_%'; - 确保DMS源端点使用的root账号拥有所有
company_前缀数据库的访问权限(包括读取元数据和表数据)。 - 检查DMS实例的VPC和安全组配置,确保能正常连接源/目标RDS实例。
内容的提问来源于stack exchange,提问作者czende
相关产品推荐
相关产品推荐

