欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ETL工具Kettle入门

程序员文章站 2024-03-22 14:00:34
...

Kettle是Java编写的一套开源的ETL解决方案。

一、下载Kettle

访问 https://sourceforge.net/projects/pentaho/ 下载7.1版本,然后解压缩,找一个mysql的驱动jar包(如mysql-connector-java-5.1.49.jar)复制到kettle的lib目录下

运行 Spoon.bat 即可启动Kettle

(注:Spoon.bat文件可以编辑,修改JAVA_HOME以及JVM参数)

二、准备数据库和数据

创建数据库kettle,四张表和初始化数据

create database kettle;
-- 创建表
CREATE TABLE user (
 userid int(10) DEFAULT NULL COMMENT '用户ID',
 username varchar(10) DEFAULT NULL COMMENT '用户姓名',
 sex varchar(1) DEFAULT NULL COMMENT '性别',
 position varchar(20) DEFAULT NULL COMMENT '职业',
 age  int(3) DEFAULT NULL COMMENT '年龄'
) ENGINE= InnoDB DEFAULT CHARSET=utf8;
-- 插入数据
INSERT INTO user VALUES (1, '陈xx', '女', '学生', 20);
INSERT INTO user VALUES (2, '王xx', '男', '工程师', 30);
INSERT INTO user VALUES (3, '李xx', '女', '医生', 40);

CREATE TABLE product (
  productid int(10) DEFAULT NULL COMMENT '产品ID',
  productname varchar(20) DEFAULT NULL COMMENT '产品名称'
) ENGINE= InnoDB DEFAULT CHARSET=utf8;
INSERT INTO product VALUES (1, '手机');
INSERT INTO product VALUES (2, '电脑');
INSERT INTO product VALUES (3 , '水杯');

CREATE TABLE orders (
 orderid int(10) DEFAULT NULL COMMENT '订单ID',
 userid int(10) DEFAULT NULL COMMENT '用户ID',
 productid int(10) DEFAULT NULL COMMENT '产品ID',
 buytime datetime DEFAULT NULL COMMENT '购买时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 插入数据
INSERT INTO orders VALUES (1, 1, 1, '2017-6-1 15:02:02');
INSERT INTO orders VALUES (2, 1, 2, '2017-6-2 15:02:22');
INSERT INTO orders VALUES (3, 1, 3, '2017-6-2 15:02:36');
INSERT INTO orders VALUES (4, 2, 1, '2017-6-6 15:02:52');
INSERT INTO orders VALUES (5, 3, 2, '2017-6-9 16:55:24');
INSERT INTO orders VALUES (6, 2, 2, '2017-7-14 14:01:36');

CREATE TABLE order_all (
 userid int(10) DEFAULT NULL COMMENT '用户ID',
 username varchar(10) DEFAULT NULL,
 sex varchar(1) DEFAULT NULL ,
 position varchar(20) DEFAULT NULL,
 age int(3) DEFAULT NULL,
 orderid int(10) DEFAULT NULL COMMENT '订单ID',
 productid int(10) DEFAULT NULL COMMENT '产品ID',
 buytime datetime DEFAULT NULL COMMENT '购买时间',
 productname varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

三、转换和作业

Kettle的转换是由一序列的步骤完成的数据抽取、转换和加载的工作。作业是由定时调度或者命令对转换做的调用。

本文最终创建的转换如下图

ETL工具Kettle入门

四、新建转换

启动Kettle后,新建一个转换,保存为 order.ktr

ETL工具Kettle入门

五、创建数据库连接

双击DB连接,编辑好数据库的参数配置,如下图

ETL工具Kettle入门

配好各项参数后,点击测试可以验证是否配置正确

ETL工具Kettle入门

六、拖入表输入组件

将“核心对象”树的输入下找到“表输入”,拖入2个到设计区域,如下图

ETL工具Kettle入门

七、编辑2个输入表的属性

双击输入表组件,分别对2个输入表进行编辑,如下

ETL工具Kettle入门

ETL工具Kettle入门

八、拖入流查询

在左侧“核心对象”树找到 查询 > 流查询,拖入到设计区域,然后从前面拖入的user和orders2个表输入组件分别连一条线过来。

再双击流查询,设置属性,如下

ETL工具Kettle入门

底部的获取字段和获取查找字段可以帮助我们快速进行字段的配置。

九、配置product输入表

再拖入一个输入表到设计区域,设置属性

ETL工具Kettle入门

十、再拖入一个流查询

拖入一个流查询到设计区域,然后从前面拖入的userid流查询和product表输入组件分别连一条线过来。

再双击流查询,设置属性,如下

ETL工具Kettle入门

十一、文本输出

在左侧“核心对象”树找到 输出 > 文本文件输出,拖入到设计区域,然后从前面拖入流查询组件连一条线过来。

再双击文本文件输出,设置属性,如下

ETL工具Kettle入门

在文件页签可以指定文件名称及路径

ETL工具Kettle入门

十二、运行并查看结果

点击设计区域左上角的运行按钮(或按F9),弹出“执行转换”窗口,点击底部的启动按钮开始运行

ETL工具Kettle入门

设计区域的每个节点都显示了绿色的对勾,底部执行结果页都显示已完成。根据第十一步中设置的文件名称及路径找到输出的文件,并查看文件内容。

十三、作业

创建作业:菜单文件 > 新建 > 作业,然后在核心对象树将Start和转换拖入设计区域,将两个组件建立连续,并配置好转换属性为前面保存的order.ktr,如下

ETL工具Kettle入门

运行:点击设计区域左上角的运行按钮(或按F9),弹出“执行作业”窗口,点击底部的执行按钮开始运行

本文内容到此结束。

ETL工具Kettle入门ETL工具Kettle入门