利用第三方kettle实现数据库之间的数据同步1(包括mysql和oracle之间数据的对接)

一般在项目里,我们难免会遇到不同数据库间的数据迁移,或者是不同数据库之间的数据同步对接。而kettle软件作为第三方软件可以很好的实现对接。
由于本人也是刚刚使用这个软件,所以在这里分享几个简单的数据对接案例。
一、步骤准备

  1. 安装mysql数据库
  2. 安装Oracle数据库
  3. 下载pdi-ce-5.4.0.1-130,并且打开data-integration底下的spoon即可打开软件

二、简单入门(例子1:简单实现同一个数据库的不同表数据同步)

  1. 新建转换
    利用第三方kettle实现数据库之间的数据同步1(包括mysql和oracle之间数据的对接)_第1张图片
  2. 修改转换名称及备注
    利用第三方kettle实现数据库之间的数据同步1(包括mysql和oracle之间数据的对接)_第2张图片
    利用第三方kettle实现数据库之间的数据同步1(包括mysql和oracle之间数据的对接)_第3张图片
  3. 添加数据库
    双击DB连接,填写配置信息,然后点击测试,如果显示连接成功即可。如果需要共享数据库,可以点击连接的数据库,右键,共享即可(共享需要重启kettle才可以实现)。
    利用第三方kettle实现数据库之间的数据同步1(包括mysql和oracle之间数据的对接)_第4张图片
  4. 添加步骤
    该例子主要实现oracle数据库的一个表数据转移到另一个表,如果两个表字段不同,可以通过映射字段转移!!
    主要的步骤包括:1.读取表数据-。2.插入表数据。首先找到核心对象–》输入–》表输入,然后鼠标左键将表输入拖入右边白色区域,如下图
    利用第三方kettle实现数据库之间的数据同步1(包括mysql和oracle之间数据的对接)_第5张图片
    同理,将输出–》插入/更新拖到右边白色步骤,并且按住shift,左键从“表输出”拖动到“插入/更新”即可建立关系,如果想要取消关联运行,再点击一次使黑色箭头线变成灰色即可,或者也可以直接右键-删除。如下图所示:利用第三方kettle实现数据库之间的数据同步1(包括mysql和oracle之间数据的对接)_第6张图片
  5. 编写步骤逻辑
    双击“表输入”,填入相关逻辑,也可以自定义步骤名称。填写完可以测试下是否能够读取到想要的数据、
    利用第三方kettle实现数据库之间的数据同步1(包括mysql和oracle之间数据的对接)_第7张图片
    然后双击“插入/更新”,填入相关逻辑。
    利用第三方kettle实现数据库之间的数据同步1(包括mysql和oracle之间数据的对接)_第8张图片
    需要注意的是,这个地方的“用来查询的关键字”,可以理解为更新条件。以我上图的为例,当oracle_to_mysql表的数据的id在kettle_test存在时,则这条记录就会被更新,不存在则进行新增。
  6. 执行
    点击上方的三角符号即可进行转换。
    利用第三方kettle实现数据库之间的数据同步1(包括mysql和oracle之间数据的对接)_第9张图片

三、实现定时功能(在上一个例子的基础上深入)

  1. 实现删除同步
    在上一个例子中,我们实现了数据同步。但是经过测试,我发现这个同步只能实现增加数据的同步,如果输入表的数据被删除,更新表却不会实现同步删除。所以,这里需要加一个“执行sql脚本”实现删除的同步,如下图利用第三方kettle实现数据库之间的数据同步1(包括mysql和oracle之间数据的对接)_第10张图片

  2. 使用定时器进行同步
    当然,在实际项目中,如果我们接数据不可能一直手动操作,肯定需要设立定时器定时接受数据,所以我们可以设立一个定时器。
    首先新建一个作业利用第三方kettle实现数据库之间的数据同步1(包括mysql和oracle之间数据的对接)_第11张图片
    然后在通用里将“start”和“转换”拖到右边空白处并且连接起来
    利用第三方kettle实现数据库之间的数据同步1(包括mysql和oracle之间数据的对接)_第12张图片
    给“start”定时,为了方便查看,我这里定时3秒为一次执行动作
    利用第三方kettle实现数据库之间的数据同步1(包括mysql和oracle之间数据的对接)_第13张图片
    然后再赋予“转换”事件,这个事件1就是我前面同步事件
    利用第三方kettle实现数据库之间的数据同步1(包括mysql和oracle之间数据的对接)_第14张图片
    然后点击上方的三角执行即可!!!

  3. 利用.bat文件在程序外启动定时器
    由于我们在数据同步接受的时候,不可能一直开着软件接收数据,所以可以考虑弄一个批处理文件进行定时器启动。而kettle提供了kitchen.bat启动定时器文件。所以,我们只要新建一个.bat文件,然后切换目录到kitchen.bat文件底下,调用kitchen.bat即可,如下所示:

d: 
cd D:\kettle\pdi-ce-5.4.0.1-130\data-integration
kitchen /file:D:\kettle\workspace\job1.kjb

由于这将会启动一个doc串口,如果想要隐藏窗口可以在.bat文件头部加入以下代码即可:

@echo off
 
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
:begin
::

如下图所示
利用第三方kettle实现数据库之间的数据同步1(包括mysql和oracle之间数据的对接)_第15张图片
四、实现oracle同步到mysql表(在上一个例子的基础上深入)

  1. 添加mysql数据库
    跟oracle一样,双击DB连接,然后配置相关信息,如下图:利用第三方kettle实现数据库之间的数据同步1(包括mysql和oracle之间数据的对接)_第16张图片
  2. 创建新的“插入/更新”
    这里如果需要将oracle表数据同步到mysql表数据,只需将oracle的“插入/更新”替换为mysql的即可。
    利用第三方kettle实现数据库之间的数据同步1(包括mysql和oracle之间数据的对接)_第17张图片
    利用第三方kettle实现数据库之间的数据同步1(包括mysql和oracle之间数据的对接)_第18张图片
    然后点上方三角运行即可!!!

五、 关于表输出的使用
通过使用,我发现好像有kettle有三种表述出方式,分别是:
插入/更新、表述出、sql脚本关系。
当然,他们之间还是有一定区别的,就目前使用经验,本人稍微总结了一点使用区别。

  1. 插入/更新(这里就不截图了,前面有介绍):
    1.1. 不执行任何更新:如果被选择,则不执行任何更新,只允许插入。
    1.2. 用来查询的关键字:可以通过定义关键字来决定插入或者更新
    1.3. 更新:可以指定那些字段不进行更新。

  2. 表输出:没有更新操作,如下图
    利用第三方kettle实现数据库之间的数据同步1(包括mysql和oracle之间数据的对接)_第19张图片

  3. sql脚本
    就是自定义sql进行实现sql操作,比其他两个灵活。如下图:
    利用第三方kettle实现数据库之间的数据同步1(包括mysql和oracle之间数据的对接)_第20张图片

完整例子看分享2!!!!

你可能感兴趣的:(利用第三方kettle实现数据库之间的数据同步1(包括mysql和oracle之间数据的对接))