kettle从入门到精通 第四十二课 kettle 1对多表拆分同步

 1、在有的业务场景中,会涉及一对多表拆分同步的业务场景,也就是说原表是一张表,将原表字段进行拆分放入目标库中的多张表,如下面的示例将表student_third中的数据

同步到student、teacher 两张表。

数据源表student_third

CREATE TABLE `student_third` (
   `id` bigint not NULL primary key auto_increment,
   `name` varchar(10) COLLATE utf8mb4_general_ci DEFAULT NULL,
   `teacher_name` varchar(10) COLLATE utf8mb4_general_ci DEFAULT NULL,
   `createtime` datetime DEFAULT NULL
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

目标表student、teacher

CREATE TABLE `student` (
   `id` bigint not NULL primary key auto_increment,
   `name` varchar(10) COLLATE utf8mb4_general_ci DEFAULT NULL,
   `teacher_serialno` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
   `createtime` datetime DEFAULT NULL
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

  

CREATE TABLE `teacher` (
   `id` bigint not NULL primary key auto_increment,
   `serial_no`varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
   `name` varchar(10) COLLATE utf8mb4_general_ci DEFAULT NULL,
   `createtime` datetime DEFAULT NULL
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

 2、下图涉及到的步骤比较简单,表输入【读取三方学生信息表】加载源数据,从student_third表中读取数据,javascript代码【根据teachernameMd5计算出teacherSerialno】通过md5计算外键,表输出【写入学生信息表】写入student表,

分组【按照教师名字分组】按照字段teacher_name进行分组,表输出【写入教师表】将数据写入teacher表。

 3、步骤【根据teachernameMd5计算出teacherSerialno】-》步骤【写入学生信息表】、步骤【根据teachernameMd5计算出teacherSerialno】-》步骤【按照教师名字分组】两者是并行的关系,连线需要

是复制模式,如下图所示。

 4、步骤【读取三方学生信息表】实现逻辑比较简单,直接从表student_third 读取数据,如下图所示。

  5、写入student、teacher两个表需要再同一个事务中,双击画布空白处进行设置即可,如下图所示。

6、步骤【写入学生信息表】实现逻辑比较简单,如下图所示。

7、多个学生的老师有可能是同一位,所以根据老师名字进行分组,如下图所示。

 8、步骤【写入教师表】实现逻辑比较简单,如下图所示。

 

posted @ 2024-02-19 08:37  慕容尘轩  阅读(181)  评论(0编辑  收藏  举报