ITPub博客

首页 > Linux操作系统 > Linux操作系统 > kettle之------ 多表数据复制

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

原创 Linux操作系统 作者:piliskys 时间:2012-04-05 15:43:35 0 删除 编辑

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

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

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

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


1.PNG

在此,我们再看一下第一组件(得到多表表名)里面内容,

2.PNG
我们再看一下得到表名中的内容

3.PNG

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


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


4.PNG

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


6.PNG

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

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

请登录后发表评论 登录
全部评论

注册时间:2008-01-14

  • 博文量
    68
  • 访问量
    159930