kettle工具下载、安装、数据迁移、定时任务详解
kettle工具的安装,使用,数据抽取,定时任务
kettle工具下载、安装、数据迁移、定时任务详解
篇幅有点长,将这五个内容放在了一篇文章里,其中最主要的是数据迁移和定时任务
目录
目录 |
---|
一、简单介绍 |
二、下载 |
三、安装 |
四、数据迁移:包括单表整体数据迁移,单表存在字段不同情况的数据迁移,简单批量数据迁移 |
五、定时任务 |
一、简单介绍
- kettle 是一个ETL工具,ETL(Extract-Transform-Load,数据抽取、转换、装载);
- kettle 有两种脚本文件 transformation和 job;transformation 是转换,job 是对多个转换构建的整个工作流的抽象和控制;
- 数据抽取高效稳定;
二、下载(比较大,慢慢等待)
三、安装
1.解压文件,打开就是下面的“解压后”的文件,我自己的放在了D盘(这个自己决定)
2.配置kettle的环境变量
1》.打开系统属性(直接搜索“环境变量”),点击环境变量
2》.在系统变量中点击“新建”,弹出“编辑系统变量”,输入变量名和变量值(这个是我自己的地址,参考),点击确定
3》点击Path,“新建”,将刚才的变量名映射过去,点击确定,配置完成
3.进入“data-integration”文件夹,找到“Spoon.bat”,双击运行即可(kettle不需要专门安装),可能有点慢,别急等待
4.已经启动
四、数据迁移(单表和批量数据迁移)
现在已经进入到kettle工具,如何使用呢,下面是源库表数据导入数据到目标库的使用,分为单表导入和批量导入
这个就是打开的界面
如何将一个库的表数据转到另一个库中,下面分三种迁移方式;
- 一、数据整体迁移
注意:这里演示的是将一个库A的单个表整体转入到另一个库B中,B库没有要迁移的这张表;还会演示将一个库A的表数据转移到目标库B已有的表中,而这个目标库B的表已经存在,而且有的字段还不一定对应
1.点击文件,新建转换;或者双击如图的转换
2.双击下面的DB连接,弹出数据库连接,选择自己对应的库,填入相对应的内容,可以测试是否连接,点击确定
(我下面的连接时postgres)
注:一个表的话连接一个,两个的话相同操作,名字别搞混,以便后面好操作
附上一张mysql连接图
3.点击选择核心对象,搜索表输入,表输出;双击显示到工作区,点击某一个按delete或者右键删除步骤也可以删除;
中间的箭头会直接连接,若没显示连接,可以shift+鼠标左键连接上;也可以点击如下图连接过去;这样他们之间就建立上了连接
4.连接以后,就开始导表了,双击表输入;选择你要导出表的数据库连接,获取sql查询语句以及字段,也可以预览表数据;然后点击确定。
5.双击表输出,选择导出表的数据库连接,选择模式,目标表可以选择也可以输入你要导出后的表名,点击sql直接会形成你想要的sql语句,然后执行以一下(若是选择的目标表就不需要执行),执行以后已经自动创建表;点击确定。
6.点击“小三角”,运行,点击启动
7.保存转换的文件,转换成功
注:现在已经将源表导入到目标表,如果报错没有迁移成功,看是否点击执行了sql语句或者保存了转换的文件,保存的文件后缀是.ktr文件
- 二:数据迁移到已有表
这里演示的将一个库A的表数据转移到目标库B已有的表中,而这个目标库B的表已经存在,而且有的字段还不一定对应
1.现用到的工具如下,可以直接搜索,拖拽到面板上,或者直接点击
2.然后从第一个开始,首先单击第一个模块表输入,如图:
选择第四个带箭头的图标或者shift+鼠标左键,然后会发现有个灰色的箭头随着你的鼠标移动,这时将鼠标移动到第二个模块值映射上,会发现箭头变蓝这时单击第二个模块值映射,会发现表输入和值映射之间多了一个蓝色箭头,有时需要选择主输出步骤。通过这种方式将所有模块串联,如下图:
3.上图就代表了一个完整的表的数据交换,这时我们需要在左侧栏,点击主对象树,然后右击DB连接,选择新建,然后填入你的数据库连接信息,并测试,成功连接后点确认即可新建连接,如图:
4.首先操作的是表输入,顾名思义,表输入代表的就是数据的来源,双击表输入,选择数据库连接,然后写上你要取数据的sql,然后点击预览,可以查看你查找到的数据,这时必须查看数据格式,因为部分字段,如:disabled,数据库中存的是0或1,但通过Kettle查找出来的数据中,disabled为Y或N
5. 如果预览出来数据,说明sql语句是对的,点击值映射,值映射就是将某些值改成另一种值,比如将Y和N映射为1和0。双击值映射,首先选择使用的字段名,然后填上原值和目标值,点击确定即可。如图:
6.点击字段选择,由于数据迁移时,必定很多字段存在差异,那么如何将两张表中的字段一一对应呢,这是就可以通过字段选择将字段的名称修改成我们想要的。首先,双击字段选择,切换到第三个页签:元数据。然后点击右边的获取改变的字段,然后Kettle会将你sql中查询出来的字段一一列出,在改名成那列填上你现表中的字段,类型填上对应的类型,需要注意的是Integer代表Long,Number代表Double,同时,类型也可以不填,但不建议。填完后选择确定。如图:
7.这时,你会发现可能你现在的表中有很多字段是原表中没有的,但这些字段又是不可或缺,不能为空的,那么就需要用到增加常量这个模块了,可以填上名称,类型,长度,值(默认值),然后点击确定。如图:
8. 在完成上部分操作后,基本字段是都可以对上了,但是,有些字段需要一些逻辑的处理,不能直接将取出来的值直接存入现表中,比如有的项目,迁移过来的时候,现表已经存在数据,id就存在重复的现象,把迁移过来的数据id直接改为负值,同时关联的id也要改为负值,这样就可以解决id重复,数据无法迁移的问题,同时关联关系也不会丢掉。
· 这时候就需要用到java代码这个模块了,这里有个问题,Kettle自带的java代码模块不会自动导入jar包,所以建议先在idea中写好代码,然后复制过来,同时需要把导入的jar包复制过来。
· 当然,导入的jar包必须在Kettle的文件夹下的lib文件夹中存在。在写代码的时候,可以在左侧栏中的input fields中双击getValue,这就是取值;在左侧栏中的output fields中双击setValue,这就是赋值。在写代码时,可以点击右下方的测试类来进行测试java代码。所以,java代码模块可以用来进行逻辑的处理,
· 如果不需要,则删掉这个步骤
如图:
9.双击表输出,选择导出表的数据库连接,选择模式,目标表可以选择也可以输入你要导出后的表名,点击sql直接会形成你想要的sql语句,然后执行以一下(若是选择的目标表就不需要执行),执行以后已经自动创建表;点击确定。
10. 点击运行,保存转换的文件即可
- 三、单个或者批量直接导入
注:这里postgres中只可以迁移源库的public中的数据,其他模式下的会提示找不到
1.点击工具——向导——复制单表向导或者复制多表向导(这里选择的是多表),点击源数据库和目标数据库,点击完成
2.找到源库中你要用的表,中间按钮是迁移,右边会显示你选择的表,点击next
3.填写文件名称,选择要保存的文件夹,点击finish。
4.点击执行,迁移成功
五、定时任务
1.点击文件——新建——作业,如下图:
2.搜索Start和转换功能拖到作业桌面,或者双击,两者之间建立连接(按住Shift+鼠标左键连接,或者双击直接会连接)
3.双击Start,出现弹窗,选择类型,填写需要的时间间隔,数据将会在设置的时间里更新数库的数据,点击确定(找不见确定,拉大点);选择“重复”的话,每次更新会在原有的基础上叠加数据
4.双击“转换”,填写转换后的文件名称,点击浏览,选择要做定时任务的.ktr文件(浏览不了,直接将文件路径粘贴过来),点击确定(这里的.ktr文件就是刚才做数据迁移后保存的文件)
5.点击执行,保存转换文件,执行成功;目前定时任务就做好了;数据库里的表数据会按照你设置的时间间隔进行数据刷新
(这里只是做了一张表的定时任务哦!)
*注:如果报错,要看自己选择的.ktr文件是否正确,并且是否保存的要转换的文件*
6.做了定时任务后,此软件不可关闭,关闭后定时任务将不再执行,切记哦!
参考:数据迁移
希望可以帮助到您
~感谢您的光临~
更多推荐
所有评论(0)