背景


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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3p3ZW5odWFu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

注意: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意思一样。

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3p3ZW5odWFu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

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

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3p3ZW5odWFu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

由于第三张关系表TB_STUCLASSLINK和TB_STUDENT、TB_CLASS存在外键依赖关系,所以必须先运行tr_stu_and_class再运行tr_stuclasslink。

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

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

总结

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

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

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

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

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

补充

kettle是开源的

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3p3ZW5odWFu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

数据迁移仅仅是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--数据迁移的更多相关文章

  1. 开源ETL工具kettle系列之常见问题

    开源ETL工具kettle系列之常见问题 摘要:本文主要介绍使用kettle设计一些ETL任务时一些常见问题,这些问题大部分都不在官方FAQ上,你可以在kettle的论坛上找到一些问题的答案 1. J ...

  2. 可用于Hadoop下的ETL工具——Kettle

    看大家分享了好多hadoop相关的一些内容,我为大家介绍一款ETL工具——Kettle.    Kettle是pentaho公司开源的一款ETL工具,跟hadoop一样,也是java实现,其目的就是做 ...

  3. 开源ETL工具之Kettle介绍

    What 起源 Kettle是一个Java编写的ETL工具,主作者是Matt Casters,2003年就开始了这个项目,最新稳定版为7.1. 2005年12月,Kettle从2.1版本开始进入了开源 ...

  4. 大数据之ETL工具Kettle的--1功能介绍

    Kettle是一款国外开源的ETL工具,纯java编写,可以在Window.Linux.Unix上运行. 说白了就是,很有必要去理解一般ETL工具必备的特性和功能,这样才更好的掌握Kettle的使用. ...

  5. ETL工具--kettle篇(17.10.09更新)

    ETL是EXTRACT(抽取).TRANSFORM(转换).LOAD(加载)的简称,实现数据从多个异构数据源加载到数据库或其他目标地址,是数据仓库建设和维护中的重要一环也是工作量较大的一块.当前知道的 ...

  6. kettle 数据迁移 (转)

    最近在公司搞一个项目重构迁移问题,旧项目一直在线上跑,重构的项目则还没上线.重构之后数据库表结构,字段,类型等都有变化,而且重构的数据库由oracl改为mysql.这样就设计到数据迁移问题,别人推荐下 ...

  7. kettle 数据迁移

    最近在公司搞一个项目重构迁移问题,旧项目一直在线上跑,重构的项目则还没上线.重构之后数据库表结构,字段,类型等都有变化,而且重构的数据库由oracl改为mysql.这样就设计到数据迁移问题,别人推荐下 ...

  8. ETL工具kettle基本使用

    1.下载kettle:https://sourceforge.net/projects/pentaho/files/Data%20Integration/7.0/pdi-ce-7.0.0.0-25.z ...

  9. 八步学会数据迁移:ETL工具kettle使用方法

    一.目的 将不同服务器上的表合并到另外一个服务器上.例如:将服务器1上的表A和服务器2上的表B,合并到服务器3上的表C 要求:表A需要被裁剪(去掉不必要的字段).表B需要增加一些字段 二.使用方法 ( ...

随机推荐

  1. C语言实现使用动态数组实现循环队列

    我在上一篇博客<C语言实现使用静态数组实现循环队列>中实现了使用静态数组来模拟队列的操作. 因为数组的大小已经被指定.无法动态的扩展. 所以在这篇博客中,我换成动态数组来实现. 动态数组能 ...

  2. 深刻理解Nginx之基本配置和升级(2)

    3 Nginx基本配置 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvam9obl9mX2xhdQ==/font/5a6L5L2T/fontsize/400 ...

  3. J2SE基础:10集合2

    2:列表(List) 特点: (1):有序的(插入的顺序有序),元素有索引值. (2):同意反复. set/get/listIterator/subList ArrayList 特点:(1):底层数组 ...

  4. springmvc+spring+jpa(hibernate)+redis+maven配置

    废话不多少 项目结构 pom.xml配置例如以下 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=& ...

  5. 转:utf8汉字编码16进制对照

    http://blog.chinaunix.net/uid-25544300-id-3281847.html GB    Unicode  UTF-8     Chinese Character Co ...

  6. 不使用Store安装WSL

    Windows Store经常会因为各种原因打不开, 这时候我们可以尝试直接下载安装WSL     1. PowerShell里运行下载: PS C:\WINDOWS\system32> Inv ...

  7. 搭建简单的Habernate环境(一)

    一.开篇 下载Habernate所需要的jar包和mysql驱动. 二.建立java项目并且导入所需要的包 三.建立实体类和配置映射文件 user实体类 package testPackage; pu ...

  8. Web Api和Asp.Net mvc post请求区别

    这是mvc的,mvc的post请求可以这样写参数,但是web api的不行.而且content_type:"application/json" 必须要写 下面这是web api的: ...

  9. PHP的错误处理和异常处理

    由于教程是围绕着文件打开做的错误处理,所以先记录几个用于文件处理的一些函数,fopen 用于打开一个文件:file_exists 用于检查目录是否存在:fclose( $变量 )用于指定关闭打开的文件 ...

  10. 大话主席(superslide和 touchslide)插件的使用

    对于实现效果来说,插件的办事效率真的是太高了,而且里边也被处理过兼容性,用起来实在是特别方便,现在我们来说说大话主席中的slide插件,它分为pc端(superslide)和移动端(touchslid ...