首页 > 代码库 > 开源ETL工具kettle--数据迁移

开源ETL工具kettle--数据迁移

背景


因为项目的需求,须要将数据从Oracle迁移到MSSQL,不是简单的数据复制,而是表结构和字段名都不一样。甚至须要处理编码规范不一致的情况,例如以下图所看到的


技术分享


注意:OracleMSSQL中的同名表的字段名是不同样的

 


假设要是採用手工SQL语句操作的话会非常麻烦,须要考虑

  • OracleMSSQL SQL语法的差异
  • 数据从抓取--转化--载入迁移的过程安排
  • 字段的映射
  • 外键的约束
  • 目的表是否为空
  • 等等很多问题

而这些问题对于kettle来说都不叫事,以下就为大家介绍怎样使用强大的kettle实现数据的迁移

 




实战


Kettle翻译成中文是“水壶”。这个名字非常形象。无论你向水壶其中加入了哪些液体或者可溶物质从壶嘴里面出来的都是均匀统一的液体。对于数据载入就是:无论数据源採用什么样的格式,Exceldatatable、纯文本或者是xmlkettle都能转化成统一的格式进行处理,而且可以更具用户的须要导出不同的格式

 

以下我们就用kettle来解决上述问题

 

首先介绍一下kettle的两个工作单元:transformationjob

transformation:实现数据的转化

job:对transformation依据依赖关系组织运行顺序,还能够对job的运行进行条件推断和预处理。用户还能够设          置job的运行时间,比方每天的9:00開始运行job,这和持续构建中的job意思一样。



看一下这款奇妙的软件长的什么样子

技术分享


首先我们创建一个transformation,命名:tr_stu_and_class,例如以下图所看到的。目的是先将学生和班级的信息从Oracle迁移到mssql

技术分享

然后创建第二个transformation。命名tr_stuclasslink。例如以下图所看到的,目的是将学生和班级的关系从oracle迁移到mssql

技术分享


由于第三张关系表TB_STUCLASSLINKTB_STUDENTTB_CLASS存在外键依赖关系,所以必须先运行tr_stu_and_class再运行tr_stuclasslink

所以我们须要一个job(命名jb_orcl2mssql)来组织他们的运行顺序。例如以下图所看到的

技术分享


接下来执行job就能够在瞬间实现数据迁移


技术分享




总结

transformation中能够自己定义字段的映射关系(如从oracle表中的哪一列迁移到mssql表中的哪一列)。能够指定迁移哪些列

 

利用图形化的模块化的方式,更加高效和直观

 

假设是大批量复杂的数据迁移,使用kettle能够更好的组织数据迁移

 

创建的transformationjob都会被保存起来。什么时候须要迁移数据。点一下button就ok

 

怎么样是不是非常easy非常强大


补充

kettle是开源的

kettle差点儿支持全部数据库、Excelxml等常见的数据格式的迁移转换。你能想到的它差点儿都支持

技术分享


数据迁移仅仅是kettle功能中非常小的一部分。kettle不仅是ETL工具更是强大的BI工具,有兴趣的童鞋们能够研究一下

 

附下载地址

http://sourceforge.net/projects/pentaho/files/Data%20Integration/5.0.1-stable/pdi-ce-5.0.1.A-stable.zip/download


开源ETL工具kettle--数据迁移