ETL工具Kettle入门

1 篇文章 0 订阅
1 篇文章 0 订阅

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的转换是由一序列的步骤完成的数据抽取、转换和加载的工作。作业是由定时调度或者命令对转换做的调用。

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

四、新建转换

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

五、创建数据库连接

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

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

六、拖入表输入组件

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

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

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

八、拖入流查询

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

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

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

九、配置product输入表

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

十、再拖入一个流查询

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

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

十一、文本输出

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

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

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

十二、运行并查看结果

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

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

十三、作业

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

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

本文内容到此结束。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值