库表列重命名

最近更新时间:2023-12-13 17:58:22

我的收藏

操作场景

库表列重命名,也称库表列映射。在数据同步场景中,用户可以通过重命名功能对同步到目标库中的库、表、列进行重新命名,以避免源库和目标库中的库、表、列因为同名引起冲突。
支持对单个库、表、列对象进行重命名,同时对库和表,也支持批量重命名。批量重命名支持添加前缀/后缀、统一重命名、替换关键词,三种方式。

使用范围

库表重命名:MySQL/MariaDB/Percona/TDSQL-C MySQL/TDSQL MySQL/TDSQL Store 之间的数据同步链路。
列重命名:MySQL/MariaDB/Percona/TDSQL-C MySQL 之间的数据同步链路。

注意事项

1. 在批量重命名功能中,如果选择统一重命名,会导致一致性校验的结果不一致,需要用户自行进行数据校验。
2. 修改同步配置时,仅支持对新增加的库表对象进行重命名操作,历史选择的库表对象,此时不能再进行重命名。如果用户在修改同步配置时,同时又对历史对象进行重命名操作,系统会在校验阶段报错,需要用户自行改回之前的名称。
3. 多对一同步场景注意事项。
使用批量统一重命名功能后,在任务详情中,控制台可能会提示结构初始化状态已失败,该报错可忽略,报错是由于目标库已经有该表的结构信息,后续该表的数据更新还是会正常同步,不影响用户使用。



在任务校验阶段,校验项中“目标实例内容冲突检查”会报错,该问题可忽略,请用户 提交工单,后台人员将为您跳过该校验项。



4. 列名重命名约束如下:
4.1 进行列重命名后,不支持再修改同步配置;修改同步配置时,也不支持对列进行重命名。
4.2 MySQL 在创建 Index、主键、唯一键时,没有设置显式的键名会给个默认值。如果用户对含 Index 的列、主键列、唯一键列做了重命名,可能会出现源端和目标端键名不一致的情况。
4.3 列重命名与视图的交互约束如下:
选择同步视图,并对视图相关的列进行重命名时,源端 create view 仅支持<table_name>.<column_name>表名+列的语法,不支持<column_name> 这种只有列,没有表名的语法,遇到只有列的语法任务可能会报错。
支持的表名+列语法示例:“create view <view_name> as select <table_name>.<column_name> from <table_name>”。
选择同步视图,后续源库在创建视图时关联的是系统库表,则不能在同步任务中同时再使用列重命名,否则任务会报错。
4.4 如果对表 A 的 X 列进行了重命名,用户在源端执行 CREATE TABLE table_B like table_A 语句,建议对表 B 的 X 列也设置相同的重命名规则。在这种场景下,DTS 对表 B 的同步会按照表 A 列重命名后的表结构,如果未对表 B 的 X 列进行相同的重命名,后续源端对表 B 的 X 列进行数据更新时,DTS 任务会报错。
4.5 如果表对象中唯一键列包含函数,则同步对象勾选该表时,无法展开到列的维度,不能进行列重名。
4.6 仅选择同步数据,不同步表结构的场景,要求用户在 DTS 任务前,在目标端创建相同的表结构;如果任务还需要设置列重命名,则用户在目标端创建的表结构为列重命名后的表结构,否则同步到目标端可能会报错。

单个库、表、列重命名

1. 登录 DTS 控制台,在左侧导航选择数据同步页,创建同步任务。
2. 在“设置同步选项和同步对象”步骤中,在选择同步对象右侧“已选对象”中,将鼠标悬浮在需要修改的对象上,即可显示编辑按钮。



3. 对单个表或者列重名时,如果没有显示右边的编辑按钮,则可能是因为选择了整库或者整表同步。
说明:
同步对象中,如果勾选了整库同步,或者整表同步,则不能对指定表进行重命名。需要逐个勾选多个表到右侧,才能对单个表进行重命名,示例如下。
同理,如果勾选了整表同步,则不能对单独的列进行重命名,需要逐个勾选多个列到右侧,才能对单个列进行重命名。






4. 在弹出的对话框,修改对象的名称,单击确定
库名映射:在弹出的对话框,设置该数据库在目标实例中的名称。


表名映射:在弹出的对话框,设置该数据表在目标实例中的名称。



列名映射:在弹出的对话框,设置该列在目标实例中的名称。




批量重命名

对库和表的重命名,支持批量操作。
1. 登录 DTS 控制台,在左侧导航选择数据同步页,创建同步任务。
2. 在“设置同步选项和同步对象”步骤中,勾选完同步对象后,在已选对象的右边,单击批量改名



3. 设置批量改名规则,完成后单击确定
改名范围:
所选全部库表:批量改名范围为同步对象勾选的所有库和表。
所选全部库:批量改名范围为同步对象勾选的所有库。
所选全部表:批量改名范围为同步对象勾选的所有表。
改名规则:
添加前缀/后缀



统一重命名:将勾选的对象统一命名,适用于多表合一的场景,请确保多个源头的表数据同步到目标端时,无主键冲突。



替换关键词:将勾选的对象名称中的关键词进行统一替换。如果对象名称中包含了多个关键词,仅对首个匹配到的关键词生效。