Kettle:跨库(SQLServer->PostgreSQL)同步多张表数据的详细设计过程
〇、参考地址
1、多个Excel实现同步
一、整体设计
1、介绍
客户数据到ods同步多张表的归档数据(也可以实现同步全部数据)
2、前提:ods建表
ods有对应的表结构,可以直连客户数据库(如SqlServer),使用本人在gitee上上传的项目,自动生成目标库(如PostgreSQL)的建表语句,可以选择生成单张表或同时生成多张表
地址:https://gitee.com/ljhahu/autoddl.git
截图:
3、建立映射表async_table
src为源表(客户数据库)表名,tt为目标表(ods)表名,手动填入需要同步的多张表表名
ps:与上一步对应,ods中要包含tt中的表(结构)
4、任务编排
(1)整体任务
(2)归档任务编排
二、job设计-get(转换-transformation)
1、转换编排
2、表输入设计
3、结果复制(无需配置)
四、job设计-push(作业-job)
(一)整体子作业
1、作业编排
2、设置迭代取数据
即每个输入行执行一次
(二)迭代取表名(转换-transformation)
1、转换编排(从作业->转换)
2、结果中获取记录
每次取一行的两个字段
3、设置变量
后续取值方式:${src}、${tt},且
(三)基于变量中的表名传输数据
1、转换编排
2、表输入
即从客户的库中查询所有数据
3、表输出
五、取差集数据
1、思路
通过业务主键进行full join,取结果集中ods源表为空的数据插入ods表
2、SQL
insert into ods.table_name
select b.*
from (
select *
from ods.table_name
where dt = to_char(CURRENT_DATE,'yyyymmdd')
) a
full JOIN ods.table_name_archive b
on a.fbillno=b.fbillno
where a.fbillno is null;
六、验证
1、日志验证
查看xxl-job调度后打印的kettle日志
2、表中验证
由于表中加入了分区dt字段,查看有无当日分区数据即可
本文来自博客园,作者:哥们要飞,转载请注明原文链接:https://www.cnblogs.com/liujinhui/p/16917029.html