ETL工具-Kettle的安装与使用

Kettle

简单介绍

Kettle是一个ETL(Extract Transform and load)工具。

可以用来:

  1. 在不同的应用或数据库之间整合数据
  2. 把数据库中数据导出到文本文件
  3. 大批量数据装载入数据库
  4. 数据清洗等等

安装

  • 下载安装kettle

官网地址:https://community.hitachivantara.com/docs/DOC-1009855

  • 环境

需要JRE1.5及以上版本

  • 安装

解压至任意文件夹即可

图形界面Spoon

简单使用

1.执行Spoon.bat

2.新建一个转换

文件->新建->转换

3.配置数据库连接

Driver缺失,将ojdbc的JAR包复制到lib文件夹下,重启spoon

ORACLE 注意主机名称和数据库名称格式:

SqlServer

4.新建表输入

选择数据源

5.新建表输出

节点连接

已有表,可以从数据库选择对应输出表

若表不存在,也可以先创建新表,填写表名,点击SQL

执行SQL语句创建表

可以指定数据源和目标数据的属性列映射关系

6.执行转换

8000的数据量大概用了近4分钟,速度有些慢,平均每秒处理40条数据

尝试提高效率

结果写入更慢了

测试-对教职工表进行插入更新删除

先对教职工表进行删除,然后再从数据源插入更新

文件->新建->作业

设置日志输出文件

设置定时执行时间间隔

执行作业

后台执行作业

  • Kitchen——作业(job)执行器 (命令行方式)
  • Pan——转换(trasform)执行器 (命令行方式)

Kitchen 参数说明:

1
2
3
4
5
6
7
8
9
10
11
12
-rep:Repository name 任务包所在存储名
-user:Repository username 执行人
-pass:Repository password 执行人密码
-job:The name of the job to launch 任务包名称
-dir:The directory (don''t forget the leading / or )
-file:The filename (Job XML) to launch
-level:The logging level (Basic, Detailed, Debug, Rowlevel, Error, Nothing) 指定日志级别
-log:The logging file to write to 指定日志文件
-listdir:List the directories in the repository 列出指定存储中的目录结构。
-listjobs:List the jobs in the specified directory 列出指定目录下的所有任务
-listrep:List the defined repositories 列出所有的存储
-norep:Don''t log into the repository 不写日志

命令行执行配置方式

1、新建一个bat文件,命名job.bat,然后编辑,输入内容如下:

1
2
3
4
5
d: ## Kitchen.bat所在路径盘符 
cd D:\software\Kettle7 ## Kitchen.bat所在目录
## 作业(job)文件路径和日志文件路径
## 执行kitchen执行job,并写入日志
kitchen /file:D:\KettleProject\job2.kjb /level:Base>>D:\KettleProject\test.log

注意:确保路径的正确性。

2、双击job.bat,即可运行。

后台运行配置方式
我们已经建立了命令行运行的bat文件,并且已经可以正确执行我们的ETL任务了,但是现在我们在运行bat后,桌面上面会一直存在一个控制台的黑窗口,我们可以使用bat命令中的隐藏窗口的命令。
修改我们的job.bat文件

1
2
3
4
5
6
7
8
9
10
11
@echo off 

if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
:begin
::
d: ## Kitchen.bat所在路径盘符
cd D:\software\Kettle7 ## Kitchen.bat所在目录
## 作业(job)文件路径和日志文件路径
## 执行kitchen执行job,并写入日志
kitchen /file:D:\KettleProject\job2.kjb /level:Base>>D:\KettleProject\test.log

在此双击job.bat运行,我们将不会再看到控制台黑窗口继续保留在桌面上,并且等待设置的间隔时间后,我们可以看到日志文件记录。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
···
2017/12/07 16:51:26 - Kitchen - Logging is at level : 基本日志
2017/12/07 16:51:26 - Kitchen - Start of run.
2017/12/07 16:51:31 - job2 - 开始执行任务
2017/12/07 16:51:31 - job2 - job2
2017/12/07 16:53:31 - job2 - 开始项[简单表同步]
2017/12/07 16:53:31 - 简单表同步 - Loading transformation from XML file [file:///D:/KettleProject/TEST2.ktr]
2017/12/07 16:53:31 - 简单表同步 - Using run configuration [Pentaho local]
2017/12/07 16:53:31 - 简单表同步 - Using legacy execution engine
2017/12/07 16:53:31 - TEST2 - 为了转换解除补丁开始 [TEST2]
2017/12/07 16:53:32 - 表输入.0 - Finished reading query, closing connection.
2017/12/07 16:53:32 - 表输入.0 - 完成处理 (I=3, O=0, R=0, W=3, U=0, E=0)
2017/12/07 16:53:32 - 插入 / 更新.0 - 完成处理 (I=3, O=0, R=3, W=3, U=1, E=0)
···