背景 由于项目的需求,需要将数据从oracle迁移到mssql,不是简单的数据复制,而是表结构和字段名都不一样,甚至需要处理编码规范不一致的情况,如下图所示 注意:oracle和mssql中的同名表的字段名是不相同的 如果要是采用手工sql语句操作的话会很麻烦,需要
背景由于项目的需求,需要将数据从oracle迁移到mssql,不是简单的数据复制,而是表结构和字段名都不一样,甚至需要处理编码规范不一致的情况,如下图所示
注意:oracle和mssql中的同名表的字段名是不相同的
如果要是采用手工sql语句操作的话会很麻烦,需要考虑
oracle和mssql sql语法的差异数据从抓取--转化--加载迁移的过程安排字段的映射外键的约束目的表是否为空等等许多问题而这些问题对于kettle来说都不叫事,下面就为大家介绍如何使用强大的kettle实现数据的迁移
实战kettle翻译成中文是“水壶”,这个名字很形象,不管你向水壶当中添加了哪些液体或者可溶物质从壶嘴里面出来的都是均匀统一的液体。对于数据加载就是:不管数据源采用什么样的格式,excel、datatable、纯文本或者是xml,kettle都能转化成统一的格式进行处理,并且能够更具用户的需要导出不同的格式
下面我们就用kettle来解决上述问题
首先介绍一下kettle的两个工作单元:transformation和job
transformation:实现数据的转化
job:对transformation根据依赖关系组织执行顺序,还可以对job的执行进行条件判断和预处理,用户还可以设 置job的执行时间,比如每天的9:00开始执行job,这和持续构建中的job意思一样。
看一下这款神奇的软件长的什么样子
首先我们创建一个transformation,命名:tr_stu_and_class,如下图所示,目的是先将学生和班级的信息从oracle迁移到mssql
然后创建第二个transformation,命名tr_stuclasslink,如下图所示,目的是将学生和班级的关系从oracle迁移到mssql
因为第三张关系表tb_stuclasslink和tb_student、tb_class存在外键依赖关系,所以必须先执行tr_stu_and_class再执行tr_stuclasslink。所以我们需要一个job(命名jb_orcl2mssql)来组织他们的执行顺序,如下图所示
接下来运行job就可以在瞬间实现数据迁移
总结在transformation中可以自定义字段的映射关系(如从oracle表中的哪一列迁移到mssql表中的哪一列),可以指定迁移哪些列
利用图形化的模块化的方式,更加高效和直观
如果是大批量复杂的数据迁移,使用kettle可以更好的组织数据迁移
创建的transformation和job都会被保存起来,什么时候需要迁移数据,点一下按钮就ok啦
怎么样是不是很简单很强大
补充
kettle是开源的
kettle几乎支持所有数据库、excel和xml等常见的数据格式的迁移转换。你能想到的它几乎都支持
数据迁移只是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