一、背景
系统A需要往系统B迁移,数据库不变。系统B有个针对分库分表的索引表,需要根据目前分库分表数据聚合出来。 数据库使用的Mysql,目前已经是百库千表。
二、整体思路
获取涉及分库的全部schema
SELECT table_schema AS table_schema1,table_schema AS table_schema2 FROM (SELECT DISTINCT table_schema FROM information_schema.tables ) t WHERE t.table_schema LIKE 'schema前缀%' or t.table_schema LIKE 'schema前缀%'
将每个schema下的表名字组装出来
SELECT CONCAT('`',s.tableSchema,'`','.','`',s.TABLE_NAME,'`' ) AS TABLE_NAME FROM (SELECT ? AS tableSchema ,TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = ? ) s WHERE s.TABLE_NAME LIKE 'schema下表前缀%'
根据组装的表名字查询需要的数据
SELECT t.*,'${tableName}' AS tbname FROM ${tableName} t WHERE DATE(t.`LAST_MODIFICATION_TIME`) < '2023-09-22'
将数据全部放入目标表
执行聚合操作等流程
三、实际流程
当前转换设置变量需要在子转换或者同作业调用链转换使用。(这是一个巨坑)
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1003805540@qq.com