kettle之------ 多表数据复制

原地址 kettle之------ 多表数据复制

需求:把A库中N个表抽取至B库中,表结构相同或只是增加统一的一些字段, 过滤条件基本类似。

解决方法:
我们把以上内容在解决问题上拆分为二步,
1,从一配制表中读出相应的表名及过滤条件,存于一结果。
2,根据第一步的结果,一条条循环来进行取数插数的过程。
以上过程相当简单,以下为讨论的实现方式。
1,如果是ORACLE 同字符集,用DBLINK结合着存储过程,写一个通用的程序很容易搞定,只需要建立一个表名及过滤条件的配制表(在此就不多说了)。
2,用ETL工具实现,据我所知,以infa为例,它以字段为对应关系,且它的流程内部循环相当困难,曾经我们有个项目,infa就是硬生生的画了一二百个mapping(的确,不会累死人,但看着相当不爽,当然,欢迎提供好的方案),
在此,我们以kettle为例进行分析,如何解决这个问题(先抛开性能,kettle的确是个好东西)

1),主流程大概是如下这样的

152422hlp1yf1w1mnmdfmp.png
1.PNG

在此,我们再看一下第一组件(得到多表表名)里面内容,
1531028mz9kkrdtki67qet.png
2.PNG
我们再看一下得到表名中的内容
153103yok3oaz4yb3dkkid.png
3.PNG

这其中的sql只是模拟一个得到表名的sql,可灵活使用, 这个组件其实就完成了把要抽取的表放入一个结果集中了。
我们再看第二个组件(表迁移)

1531039yo7uoyo6sbkq1ak.png
5.PNG
就是一个取数一个插数的过程。
再看一下它们的内容

153103wy8991ljyojqw99l.png
4.PNG

在此就完成了,但是,我们主job设置(表迁移)组件时,也就是把前面的内容当后面的参数循环执行。

153104u7hps4264st0cdyt.png
6.PNG

基本就是如此,另,记得在各主流程及二转换中都设置tt_tab这个参数。
说了这么多,其实很简单。如果你是要做数据库表复制的话,kettle有其它的方式,可以根据工具-》向导-》复制表向导完成。
以上这种适应的是,可实现一些sql的拼接,且要增加减少表时只需求维护配制表了,相对来说会变的简单。。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/134308/viewspace-720377/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/134308/viewspace-720377/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值