DM的routes部分配置问题

使用DM迁移时,假如源表有如下表名:
s1.t1
s1.t2
s1.t3
迁移后的表名希望是:
s1_bak.t1_bak
s1_bak.t2_bak
s1_bak.t3_bak
请问下是否支持类似以下的配置:
routes:
route-rule-1:
schema-pattern: “s1”
table-pattern: “t*”
target-schema: “${schema_name}_bak”
target-table: “${table_name}_bak”

以上配置的${schema_name}、${table_name}是变量,变量名是我随便取,不知道贵公司是否有类似的配置,真正的变量名又是什么呢?

支持库表名不一致,变量的写法应该不支持,支持正则表达式匹配

后面有没有可能安排上呢:heart_eyes:

没理解这个需求是什么:face_with_spiral_eyes:现在的正则表达式或者后缀表达式都能进行库表名映射吧,而且看上去更加直接、容易理解…

我的意思就是在target-schema或者target-table这里的使用变量

有什么问题是必须用变量才能解决的吗

比如我上面的例子,虽然不使用变量也可以实现,但是任务配置的时候会有点啰嗦了,用变量配置的话就一目了然了

那可能是您的使用习惯问题。但太多的表达方式也会让其他用户困扰,应该不会作为 feature 引入。感谢您的支持与反馈!

所以下面这个的route怎么配置呢?
s1.t1
s1.t2
s1.t3
迁移后的表名希望是:
s1_bak.t1_bak
s1_bak.t2_bak
s1_bak.t3_bak

这样配置吗?(如果您这边有更好的配置麻烦发一下哈,主要是你们文档里rootes中target-schem和target-table的配置样例太少了,只有schema-pattern和table-pattern的配置样例丰富一点)
routes:
route-rule-1:
schema-pattern: “s1”
table-pattern: “t1”
target-schema: “s1_bak”
target-table: “t1_bak”
route-rule-2:
schema-pattern: “s1”
table-pattern: “t2”
target-schema: “s1_bak”
target-table: “t2_bak”
route-rule-3:
schema-pattern: “s1”
table-pattern: “t3”
target-schema: “s1_bak”
target-table: “t3_bak”

是的。DM 的 route 需要为下游的每一个目标表至少写一条 rule。

在您的例子里,每个库表名都一对一映射到下游的库表里,因此每个上游的库表都需要写一条 rule;而其他用户大多则是需要把上游的多个表合并迁移到下游的某一个库表里。

这个设计确实对您造成了一些不便,会将这个需求记录到 github 的 issue 里,看下后续能不能做一些优化。

1 个赞

好的呢!多谢答疑!

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。