kettle 多表全删全插同步数据 两种方案

接到上级指示,要从外网某库把数据全部导入到内网,数据每天更新一次即可,大约几百万条数据,两个库结构一样,mysql的,两台数据库所在服务器都是windows server的,写个java接口实现下吧,给了一个外网数据库信息,好了,给你3天时间,开始搞吧。

分析:

用java接口写逻辑?不好意思,基本没思路,大神就不要喷我了。前公司的数据中台的数据都是通过kettle定时抽取的,虽然暂时我还不知道是个什么鬼,但总比me思路强,于是果断舍弃java接口,全面百度kettle,为了工作啊……

准备工作:

先不说抽取逻辑,咱得先把工具部署在自己电脑跑起来对吧,所以,准备下载部署开搞,不过好像kettle改名了,叫什么pdi……
kettle下载部署,官网上我找了好长时间不知道咋下载免费的,所以找到了这个网站https://sourceforge.net/projects/pentaho/files/Data%20Integration/ 我用的是7.1版本的,点击7.1,把zip压缩文件下载下来。

image


这个直接解压就可以,无需安装。
注意:1.先不急打开程序,kettle是纯java编写的,所以kettle工具的使用,必须要有java环境,尽量使用jdk1.8,因为别的版本我不确定会不会有问题,至于怎么安装jdk1.8和配置环境,请各位大佬自行百度。
2.根据百度经验,还有点问题需要自行处理,就是数据库的驱动包问题,因为我这只涉及mysql所以也就只对mysql的驱动包进行操作,其他数据库驱动连接是否有问题,不确定。
mysql官网驱动包下载地址:https://dev.mysql.com/downloads/connector/j/

image


点击历史版本,不要下最新版本或者比较高版本,为啥?因为不支持……
继续操作

image


最高选用5.1.49版本,接上一话题,为啥不用再高版本,因为你可以下载下来对比下,5.1.49的解压文件中,是有两种jar包的,

image


带bin的一定要有,没有就连不上数据库,5.1.49版本之后就没有带bin的了,不信你去看看。
把这两种jar包直接放在以下路径就好:

image

方案一:

在一个作业中使用多个转换,效果图:

image


当然这种方案的效果并不是都是这种的,但原理都是一样的,有可能是所有的转换是串行顺序执行的,一条流程走完,那样会造成其中某个转换有问题,就不往后执行了,我这种虽然看着密集了些,但不会因为某个表转换出错而停止。
接下来就是具体操作流程:

第一步:

创建转换,点击“文件”,点击“新建”,点击“转换”,建立转换空白页

image

第二步:

配置来源库和目标库,如下:

image


image


因为要配置来源库和目标库,所以以上操作需要再重复一遍

第三步:

建立转换逻辑脚本的内容:
表输入:

image


双击表输入:

image


点击确定后,弹出:

image


我选的是,效果:

image


最后点击确定即可;
使用插入/更新:为啥不用表输出呢,因为表输出没法更新,还有主键的一些限制,所以用插入/更新,可以先用这个,不行你再百度其他的……,反正我用的还不错。

image


image


一定要先建立上它俩之间的流程关系,再编辑插入/更新,否则,你在编辑插入/更新时,会在获取字段和获取映射关系时,没有反应……
接下编辑插入/更新

image


然后保存转换脚本,

image


我得是直接保存到桌面了,供演示用。
现在这一个转换脚本就完成了,因为是多表同步数据,所以你要把第三步重复执行多边,最后是一个数据库表对应一个转换文件,效果:

image


转换文件的全路径,尽量也是英文的,不要用中文的。

第四步:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgfxjf.html