背景


因为项目的需求,须要将数据从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. code::blocks配置编译cuda并进行第一个demo的測试

    我们先新建个NVCC的编译器. 使用复制GCC编译器的方式进行新建,然后我们进行下面的路径配置 先来看看链接库,将我们常常使用的cuda库链接进来. 然后链接cuda的头文件: 接着配置调试工具以及编 ...

  2. TCO 2015 2D

    250分题:给一段仅仅有'0','1'构成的字符串,然后给出串上平衡点的定义:在串上找到某个点(位置是p),这个点将串分成左右两部分(能够为空),左右分别计算字符的值的和,假设左边有字符是'1',那么 ...

  3. BZOJ 1790: [Ahoi2008]Rectangle 矩形藏宝地

    BZOJ 1790: [Ahoi2008]Rectangle 矩形藏宝地 题目传送门 [题目大意] 游戏的主办方把这块开阔地当作第一象限,将所有可能埋藏宝藏的地方划成一个个矩形的土地,并把这些矩形土地 ...

  4. Oracle Hint的用法

    1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化. 例如: SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_I ...

  5. ROS命令参考

    前言:整理一些ROS常用命令,参考自:<ROS机器人编程>. 一.ROS执行命令 二.ROS信息命令 三.ROS catkin命令 四.ROS功能包命令 -END-

  6. spring事务,TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

    在aop配置事务控制或注解式控制事务中,try...catch...会使事务失效,可在catch中抛出运行时异常throw new RuntimeException(e)或者手动回滚Transacti ...

  7. css3之BFC、IFC、GFC和FFC

    CSS2.1中只有BFC和IFC, CSS3中才有GFC和FFC. What's FC?一定不是KFC,FC的全称是:Formatting Contexts,是W3C CSS2.1规范中的一个概念.它 ...

  8. Java 面向对象详解

    0 引言 接触项目开发也有很长一段时间了,最近开始萌发出想回过头来写写以前学过的基础知识的想法. 1 面向对象 面向对象(Object Oriented)是一种新兴的程序设计方法,或者是一种新的程序设 ...

  9. ES6 Symbol类型 附带:Proxy和Set

    七种数据类型 ·Symbol ·undefined ·null ·Boolean ·String ·Number ·Object let a = Symbol('this is a symbol'); ...

  10. 【Paper Reading】Deep Supervised Hashing for fast Image Retrieval

    what has been done: This paper proposed a novel Deep Supervised Hashing method to learn a compact si ...