摘要:
这次记录是因为前段时间公司新开的项目,新建了一个数据库,有部分数据在新的项目中用的到,需要从原来的数据库中同步过来,
原来的做法是在项目中使用task定时任务来定时从原来的数据库中拉取数据,但是在一个项目中实现跨数据源是一个很烦凡人的事请而且代码实现方式效率不高还可能遇到其他一些问题:比如项目挂了那你的定时任务自然也挂挂了,后台项目组长让使用ETL工具实现同步,找了半天找到一个开源免费的工具Kettle.
前提:
我使用的window如果你的linux版本可以自行百度安装和配置教程
kettle中文网对Kettle的介绍如下:
说还了就是Java语言开发的开源免费的ETL数据抽取工具.
Kettle的安装和配置相当简单,这里也简单介绍一下:
管网下载
https://sourceforge.net/projects/pentaho/files/Data%20Integration/
安装相当简单直接解压即可大致目录如下(注意不要使用中文或者特殊符号的文件夹)
因为Kettle是java环境开发 所以我们需要简单配置一下Java8环境并"告诉"Kettle.如果你不知道怎么配置Java环境请移步"JDK环境配置"
首先我们选中 Spoon.bat 右键使用文本编辑器打开它在此处添加如图配置
set JAVA_HOME=D:\StudyWorkspace\JavaWorkspace\java_tools\JDK8u231\install set CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; set Path=%JAVA_HOME%\bin;
如果你的数据库使用的Mysql,你需要下载mysql的数据库驱动,并且数据库驱动不能使用5.8 我们将下载好的mysql驱动包放在lib目录即可
双击Spoon.bat脚本即可完成启动.启动结面如下
Kettle的使用非常简单,因为GUI界面直接就是中文
经过上面的操作我们就能在左侧看到我们DB链接了,为了以后操作方便,并且其他数据库都可以互相访问我们可以将创建的DB连接共享一下
使用Kettle的时候我们一把会先新建一个作业,相当于我们的job一样
点击 “文件”–>“新建”–>“作业”–>添加我们想要的组件(双击组件可以设置组件属性)
具体组件的用法自行百度,这些东西其实就是简单的API不再一一介绍,这里只对经常使用的做一个介绍
START: 作业开始组件 我们可以设置属性让作业定时执行
转换: 数据转换组件,可以设置要执行的转换(后面我们会介绍新建转换)
成功: 结束标识
我们可以如下图新建转换
组件如下
我们可以在表输入中输入SQL来获取我们要同步的数据
我们可以查询要插入的数据库中的数据后期用于对比使用
我们可以使用排序组件对源数据库和目标数据库中查询的数据进行排序
我们可以使用合并记录组件对刚才排序的数据进行合并,其中匹配关键字就是两者比较是否相同的依据
使用数据同步组件对数据进行同步
本次就是简单记录,使用方式,具体的API不去做详细介绍,只是提供参考,因为不同的业务没办法保证新建的每一个工作都一样,所以这些东西只能根据具体需求使用不同的组件和流程来完成具体的业务,具体组件的作用需要自己去百度和发现.