一. 概述
ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。
kettle, 最受欢迎的ETL工具之一, 本文将从安转到简单使用过一遍
二. kettle安转
2.1 环境准备
2.2 配置修改
1. 下载kettle后解压进入文件夹/data-integration
-
spoon.sh
: macos/linux的启动脚本 -
Spoon.bat
: win系统启动脚本
2. mac系统修改文件spoon.sh
,配置启动脚本jdk路径
# 设置java home 绝对路径
export _PENTAHO_JAVA_HOME=/Library/Java/JavaVirtualMachines/1.8.0_211.jdk/Contents/Home
export _PENTAHO_JAVA=$_PENTAHO_JAVA_HOME/bin/java
3. win系统修改文件Spoon.bat
,配置启动脚本jdk路径
set JAVA_HOME=/Library/Java/JavaVirtualMachines/1.8.0_211.jdk/Contents/Home
set PENTAHO_JAVA_HOME=%JAVA_HOME%
2.3 启动kettle
执行脚本sh spoon.sh
三. 示例DEMO
本demo简单实现两个数据库间的数据同步
3.1 新建作业
1. 新建
2. 拖拉流程节点到右边
3. 按住[shift]键用鼠标拉动连接流程
3.2 新建转换
1. 新建
2. 新增数据库连接, 连接两个需要同步的数据库
注意,在选项设一下字符编码,避免同步数据出现问号, characterEncoding=utf8
同样操作连接两个数据库
3. 配置表输入
4. 配置插入/更新
3.3 把作业和转换连接
3.4 配置作业执行计划
设置每15s同步一次
3.5 执行
1. 直接执行转换
2. 直接执行作业
四. 脚本直接启动作业
- kettle可以通过脚本
kitchen.sh
或Kitchen.bat
执行作业, mac/linux用kitchen.sh
, win用Kitchen.bat
- Kitchen命令参数说明:
-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 不写日志
4.1 mac/linux示例脚本
demo.sh
# kitchen.sh做在的绝对路径
~/data-integration/kitchen.sh \
# 作业做在的绝对路径
-file=~/demo.kjb \
# 日志输出文件绝对路径
-log=~/demo.log
4.2 win示例脚本
demo.bat
:: Kitchen.bat所在路径盘符
d:
:: Kitchen.bat所在目录
cd D:\data-integration
:: 作业(job)文件路径和日志文件路径
:: 执行kitchen执行job,并写入日志
kitchen -file=D:\demo.kjb -log=D:\demo.log