1. 简介
1.1. 软件描述
Kettle是一款可以用于对数据进行抽取,将数据从一个数据库定时定向地导到另一个数据库的软件工具。Kettle允许导出或导入过程进行特殊处理(比如设置条件,写存储过程过滤等)
2. Kettle的安装
Kettle安装需要先安装jdk。
Pdi-ce-7.0.0.0-25需要jdk1.7以上
下载地址:http://community.pentaho.com/projects/data-integration/
下拉最下边
安装步骤:
1、安装jdk
2、下载压缩包,解压
3、执行压缩包下的spoon.bat文件即可。
4、设置.kettle文件夹的路径
执行后默认的.kettle文件夹在系统用户路径下个人环境为:(C:\Users\luke\.kettle)
由于该路径不好找,可以将路径修改,修改如下:
可以在启动spoon.bat文件之前配置如下步骤:
在系统环境变量中配置变量KETTLE_HOME,值为kettle_home压缩包路径(C:\workwaresoft\kettle)
如此即可把.kettle文件放在想要放的位置上。
之后如果想要转移所编写的kettle信息,可直接把.kettle下的文件区换掉其他kettle的.kettle文件,就可以把配置移到另一个kettle环境上了。
注:有时候我们配置了文件后打开kettle,发现kettle右上方不存在Connect下拉按钮,解决方式如下:
1、查看.kettle文件下的配置文件是否存在乱码,把乱码去掉。
.kettle文件路径可以通过系统变量的KETTLE_HOME查看,如果没有,默认在C:\Users\${机器名称}\.kettle。机器名称一般可在计算机属性里查看到(64位,cpu信息等信息的那个地方)
2、乱码都去掉了,还是不可以的话,建议把其删了,重新解压。还不行的话,从别人那里考个能用的过来,注意拷过来后,.kettle使用的是在系统变量中配置的路径,没配置就使用上面说的默认路径。
3. 操作流程
3.1. 创建repository Manager
打开Spoon7.bat允许文件后,界面打开,在界面右上角有个connect按钮,没有原来的connect的话,点击会直接出现创建对话框,如果本来就有一些已经创建的connect的话,点击创建repository Manager,如图:
打开创建对话框--->add---->Other Repositoryies--->
有两种模式的Repository
Database Repository:以数据库文件存储的Repository
File Repository:以文件形式存储的Repository
现在以文件形式存储为例
---->选择File Repository--->get started 出现如下对话框
Display Name:显示名称
Lauch connection on startup:启动时默认选择该Repository
填写上面的选项点击finish后,选择所建的repository
此时可以在repository中创建相关的转换,作业等
3.2. 创建转换
在“主对象树”选择转换,双击
切换到“核心对象”,将相关控件拖入。
表的导入导出一般有如下步骤
表输入---->表输出。过程可以有各种相关转换。
一个转换可配置相关信息如下:
3.2.1. 表输入
一般为某一数据的某张表的信息(包括表结构和数据):
图片可直接打开软件的表输入即可看到,这里就不加了
其中
数据库连接:需要选择要从个数据库导出数据(数据源)
SQL:所要查询表的sql语句,可以直接通过获取SQL查询语句获取
允许简易转换:一般不勾选,勾选后它会把中文变成乱码,其他转义字符也会有所变化
替换SQL语句的变量:可在系统中设置变量,来替换sql语句中的变量,设置如下:
系统中设置的变量在“--编辑--->设置环境变量”中设置相关的值。
也可以在“编辑---编辑kettle.properties文件”中设置变量,该变量存储在kettle.properties文件中(一般在C:\Users\luke\.kettle路径下),如下
预览:可以查询到所连接的数据中根据sql语句查询出来的数据(即要导出来的数据)
3.2.2. 表输出
表输出的作用是把表输入的数据源,导入到另个数据库(目标数据库)中。
图片可直接打开软件的表输出即可看到,这里就不加了
如图中所示:
数据库连接:目标数据库,即所要导到的数据库的连接
目标表:所要导入数据的表,重新写名字,如果表已经存在,就直接在浏览中查找
指定数据库字段(需要表输入到表输出有箭头连线):需勾选,然后可在数据库字段tab页中获取字段,即从表输入的表头字段,跟输出表的字段建立映射。
SQL按钮:能够查看将要创建的表的创建SQL语句
配好上面字段后就完成了。
3.2.3. 其他环节
类别 | 环节名称 | 功能说明 |
Input | 文本文件输入 | 从本地文本文件输入数据 |
表输入 | 从数据库表中输入数据 | |
获取系统信息 | 读取系统信息输入数据 | |
Output | 文本文件输出 | 将处理结果输出到文本文件 |
表输出 | 将处理结果输出到数据库表 | |
插入/更新 | 根据处理结果对数据库表机型插入更新,如果数据库中不存在相关记录则插入,否则为更新。会根据查询条件中字段进行判断 | |
更新 | 根据处理结果对数据库进行更新,若需要更新的数据在数据库表中无记录,则会报错停止 | |
删除 | 根据处理结果对数据库记录进行删除,若需要删除的数据在数据库表中无记录,则会报错停止 | |
Lookup | 数据库查询 | 根据设定的查询条件,对目标表进行查询,返回需要的结果字段 |
流查询 | 将目标表读取到内存,通过查询条件对内存中数据集进行查询 | |
调用DB存储过程 | 调用数据库存储过程 | |
Transform | 字段选择 | 选择需要的字段,过滤掉不要的字段,也可做数据库字段对应 |
过滤记录 | 根据条件对记录进行分类 | |
排序记录 | 将数据根据某以条件,进行排序 | |
空操作 | 无操作 | |
增加常量 | 增加需要的常量字段 | |
Scripting | Modified Java Script Value | 扩展功能,编写JavaScript脚本,对数据进行相应处理 |
Mapping | 映射(子转换) | 数据映射 |
Job | Sat Variables | 设置环境变量 |
Get Variables | 获取环境变量 |
3.3. 创建作业
3.3.1. 作业功能介绍
作业:相当于一个流程,有开始和结束,在执行过程中可以对这个流程进行控制,比如设定一个时间,什么时候执行该作业等操作。
作业的基本信息如下:
ž常用环节介绍
类别 | 环节名称 | 功能说明 |
Job entries | START | 开始,是否重复执行,隔多少时间执行一次(月、周、日、分、秒) |
DUMMY | 结束 | |
Transformation | 引用另一个Transformation流程 | |
Job | 引用另一个Job流程 | |
Shell | 调用Shell脚本 | |
SQL | 执行sql语句 | |
FTP | 通过FTP下载 | |
Table exists | 检查目标表是否存在,返回布尔值 | |
File exists | 检查文件是否存在,返回布尔值 | |
Javascript | 执行JavaScript脚本 | |
Create file | 创建文件 | |
Delete file | 删除文件 | |
Wait for file | 等待文件,文件出现后继续下一个环节 | |
File Compare | 文件比较,返回布尔值 | |
Wait for | 等待时间,设定一段时间,kettle流程处于等待状态 | |
Zip file | 压缩文件为ZIP包 |
3.3.2. 例子
一般导数据流程如上。
1、开始执行(可定时)---》
2、检查相关的数据库连接----》
3、检查所要导到的表是否存在-----》
4、进行转换:输入表到输出表(中间表)之间的表头数据进行映射,转换成中间表----》
5、二次转换:通过存储过程或sql语句,将输出表需要过滤的数据从中间表中过滤,再存到输出表中
6、成功
7、结束(可以没有)
(如果不需要中间表,而直接在表输入到表输出的转换过程中直接输出到目标表,这种流程也是可以。)
3.4. 其他操作
1、从作业中打开的转换的方式,能够直接从作业中进入作业的转换子节点中。
2、打开其他资源
通过“文件”----》“打开”;或“工具”--》“资源库”--》“搜索资源”