利用kettle实现数据库之间的数据同步

gOod mornIng | 1790 | 2022-06-29

利用kettle实现数据库之间的数据同步

如果你需要做不同数据库之间的数据迁移或者抽取部分数据到另一个数据库,并实现定时数据同步(非实时),那么kettle是一个很好的选择。

以mysql数据库—> oracle数据库的定时同步作为案例:

一、工具安装和环境准备

  1. 安装mysql数据库和oracle数据库
  2. 下载pdi-ce-8.2.0.0-342
  3. 打开目录下data-integration\Spoon.bat ,即可打开keetle软件

二、 搞清楚数据抽取需求

我例举了以下几点:

  1. 单表对单表抽取时,抽取数据的mysql数据库表和oracle的表是否一致;
  2. 多表对单表抽取时,根据业务需求,写相应sql,将查找出来的数据抽取到相应数据到相应数据库中。
  3. 是否做定时,怎么定时。
  4. 全量抽取 or 增量抽取。

案例需求:从mysql抽取数据到oracle,根据业务需求,在mysql写sql,增量抽取其数据到Oracle中,实现按天定时抽取。

备注:(按月增量),查询当前月份为全量抽取,非当前月份数据增量抽取。例如:今天是10月15日,到月底之前每天全量抽取当月数据,每天更新10月份的数据;11月1号开始,10月份数据不动,只是每天全量抽取更新11月份的数据。

所以当月是全量抽取,但增量是基于前一个月的基础上。

首先在mysql数据库 根据需求编写sql。

三、新建转换

  1. 主对象树-转换-右键新建

在这里插入图片描述

  1. 主对象树-DB连接-右键新建

在这里插入图片描述

连接oracle数据库:

在这里插入图片描述

连接mysql数据库:

在这里插入图片描述

此处,为了避免每次创建转换都需要重复连接数据库,我们可以连接一次,做一下共享,这样全局都可以使用:

1、连接成功之后,右键-共享 即可(共享后的DB连接的是加粗的)

f8a5a4ef2ce34750b68969673e672830

2、注意连接名称不能出现中文,否则会出问题;如果出现了问题,不要慌。
刚才共享数据库连接的数据在shared.xml中,我们顺着下图路径找到并删掉他重新共享即可;

2ff3ef3541894a7fafc53f1c36a2b400

  1. 核心对象—输入—表输入-拖入界面即可

在这里插入图片描述

双击打开表输入

在这里插入图片描述

  1. 核心对象—输出—插入/更新—拖入界面即可

    在这里插入图片描述

    双击打开表插入/更新

在这里插入图片描述

  1. 核心对象—>转换—>字段选择—拖入界面即可

    按住shift连接三者

    在这里插入图片描述

    双击打开字段选择(点击元数据—获取改变的字段即可)

    在这里插入图片描述

    注意Encoding设置为UTF-8,否则抽取的数据会乱码

    在这里插入图片描述

  2. 核心对象—>脚本—>执行sql脚本—拖入界面即可

在这里插入图片描述

双击打开执行sql脚本

由于我们需要按月做增量抽取,本月数据做全量抽取。所以在抽本月数据之前要先删除oracle库目标表中之前抽取的本月数据。

在这里插入图片描述

  1. 点击运行此转换—即可完成一次数据抽取

    在这里插入图片描述

四、新建作业

  1. 主对象树-作业-右键新建

    在这里插入图片描述

  2. 核心对象—Start/作业/成功—拖入界面并连接

    在这里插入图片描述

  3. 双击打开作业

    浏览—选择上一步的转换文件目录

    在这里插入图片描述

  4. 双击打开Start

    设置按天 定时抽取(重复)

在这里插入图片描述

  1. 点击run 定时抽取数据到oracle,即可完成

在这里插入图片描述

文章标签: 数据库
推荐指数:

4人已点赞

利用kettle实现数据库之间的数据同步

没有更多了

关于作者 📝

gOod mornIng

这个人很懒~

等级 LV1

粉丝 3

获赞 7

经验 20

利用kettle实现数据库之间的数据同步

评论