目录
3、双击spoon.bat 启动spoon 启动时间 有点久 耐心等待
3.3 单击 CSV 输入文件,Excel 输出,设置文件信息
一、Kettle介绍
对于企业或行业应用来说,经常会遇到各种数据的处理,转换,迁移,掌握一种etl工具的使用,必不可少,这里要学习的ETL工具是——Kettle,现在已经更名为PDI。
- Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装
- Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出
- Kettle允许管理来自不同数据库的数据,提供一个图形化的用户环境来描述想做什么,无需关心怎么做
二、Kettle安装、配置
环境要求:
- Windows下安装、配置好JDK1.8
1、下载Kettle
资料\安装包\pdi-ce-8.2.0.0-342.zip
下载 地址:http://mirror.bit.edu.cn/pentaho/Pentaho%208.2/client-tools/
2、解压Kettle
3、双击spoon.bat
启动spoon 启动时间 有点久 耐心等待
三、Kettle入门案例
1、需求
需求:把数据从CSV文件(ketttle测试数据\用户数据源\user.csv)抽取到 Excel 文件
2、 数据源:
id,name,age,gender,province,city,region,phone,birthday,hobby,register_date
392456197008193000,张三,20,0,北京市,昌平区,回龙观,18589407692,1970-8-19,美食;篮球;足球,2018-8-6 9:44
267456198006210000,李四,25,1,河南省,郑州市,郑东新区,18681109672,1980-6-21,音乐;阅读;旅游,2017-4-7 9:14
892456199007203000,王五,24,1,湖北省,武汉市,汉阳区,18798009102,1990-7-20,写代码;读代码;算法,2016-6-8 7:34
492456198712198000,赵六,26,2,陕西省,西安市,莲湖区,18189189195,1987-12-19,购物;旅游,2016-1-9 19:15
392456197008193000,张三,20,0,北京市,昌平区,回龙观,18589407692,1970-8-19,美食;篮球;足球,2018-8-6 9:44
392456197008193000,张三,20,0,北京市,昌平区,回龙观,18589407692,1970-8-19,美食;篮球;足球,2018-8-6 9:44
3、 具体实现
3.1 拖csv文件输入,Excel输出
3.2 shift 按住 鼠标左键单击 连线
连好 线后 选择 主输出步骤 ,此处的 连线为 蓝色, 单击 连线 变为 灰色 就不能执行了
3.3 单击 CSV 输入文件,Excel 输出,设置文件信息
3.4 启动执行
执行完成后显示 转换成功
查看 输出的文件
下面的输出的 Excel 表中的数据 和 我们输入的 CSV 文件 字段 的还是 有些出入, 这个要在输入的 数据字段 类型修改即可
对 输出到 Excel 表中的 字段类型 进行控制
我们 再次查看 输出结果
四、Kettle输入/输出组件
1、输入组件
4.1 JOSN数据文件输入
需求: 将 user.json 导入到 Excel 中
1. user.json
[
{
"id": "392456197008193000",
"name": "张三",
"age": 20,
"gender": 0,
"province": "北京市",
"city": "昌平区",
"region": "回龙观",
"phone": "18589407692",
"birthday": "1970-08-19",
"hobby": "美食;篮球;足球1",
"register_date": "2018-08-06 09:44:43"
},
{
"id": "267456198006210000",
"name": "李四",
"age": 25,
"gender": 1,
"province": "河南省",
"city": "郑州市",
"region": "郑东新区",
"phone": "18681109672",
"birthday": "1980-06-21",
"hobby": "音乐;阅读;旅游",
"register_date": "2017-04-07 09:14:13"
},
{
"id": "892456199007203000",
"name": "王五",
"age": 24,
"gender": 1,
"province": "湖北省",
"city": "武汉市",
"region": "汉阳区",
"phone": "18798009102",
"birthday": "1990-07-20",
"hobby": "写代码;读代码;算法",
"register_date": "2016-06-08 07:34:23"
},
{
"id": "492456198712198000",
"name": "赵六",
"age": 26,
"gender": 2,
"province": "陕西省",
"city": "西安市",
"region": "莲湖区",
"phone": "18189189195",
"birthday": "1987-12-19",
"hobby": "购物;旅游",
"register_date": "2016-01-09 19:15:53"
},
{
"id": "392456197008193000",
"name": "张三",
"age": 20,
"gender": 0,
"province": "北京市",
"city": "昌平区",
"region": "回龙观",
"phone": "18589407692",
"birthday": "1970-08-19",
"hobby": "美食;篮球;足球1",
"register_date": "2018-08-06 09:44:43"
},
{
"id": "392456197008193000",
"name": "张三",
"age": 20,
"gender": 0,
"province": "北京市",
"city": "昌平区",
"region": "回龙观",
"phone": "18589407692",
"birthday": "1970-08-19",
"hobby": "美食;篮球;足球1",
"register_date": "2018-08-06 09:44:43"
}
]
2. 指定JSON 文件数据源
json 文件 选择之后,一定要选择字段, 字段 输出可以 自由选择
4.2 表输入
需求:将 MySQL 数据库中 user 表 中的数据 抽取到 Excel 文件中
1. 完成 MySQL 和 kettle 整合 ,之后将 kettle 重启
在 kettle 的 lib 目录 下 添加 jar 包
2. 在 MySQL 中 创建 t_user 表
CREATE DATABASE /*!32312 IF NOT EXISTS*/`test` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `test`;
/*Table structure for table `t_user` */
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
`id` tinytext,
`name` tinytext,
`age` double DEFAULT NULL,
`gender` double DEFAULT NULL,
`province` tinytext,
`city` tinytext,
`region` tinytext,
`phone` double DEFAULT NULL,
`birthday` tinytext,
`hobby` tinytext,
`register_date` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `t_user` */
insert into `t_user`(`id`,`name`,`age`,`gender`,`province`,`city`,`region`,`phone`,`birthday`,`hobby`,`register_date`) values ('392456197008193000','张三',20,0,'北京市','昌平区','回龙观',18589407692,'1970-08-19','美食;篮球;足球','2018-08-06 09:44:43'),('267456198006210000','李四',25,1,'河南省','郑州市','郑东新区',18681109672,'1980-06-21','音乐;阅读;旅游','2017-04-07 09:14:13'),('892456199007203000','王五',24,1,'湖北省','武汉市','汉阳区',18798009102,'1990-07-20','写代码;读代码;算法','2016-06-08 07:34:23'),('892456199007203000','赵六',26,2,'陕西省','西安市','莲湖区',18189189195,'1987-12-19','购物;旅游','2016-01-09 19:15:53'),('392456197008193000','张三',20,0,'北京市','昌平区','回龙观',18589407692,'1970-08-19','美食;篮球;足球','2018-08-06 09:44:43'),('392456197008193000','张三',20,0,'北京市','昌平区','回龙观',18589407692,'1970-08-19','美食;篮球;足球','2018-08-06 09:44:43');
3. 配置表输入,新建数据库连接
4. 选择 t_user 表,并获取 SQL查询语句
5.配置 Excel 输出组件, 指定 Excel输出位置
4.3 生成记录
数据仓库中绝大数的数据都是业务系统生成的动态数据,但是其中一部分维度的数据不是动态的,比如:日期维度。静态 维度数据就可以提前生成。
需求:往 Excel 文件中插入1000条记录:id为1,name为 kangna,age为18
1. 拖入生成记录组件,输出 Excel 组件,配置 生成记录组件
查看结果
生成记录只能生成空行或者 固定的记录
2、输出组件
4.4 文本文件输出
需求:从mysql数据库的test库的t_user表 抽取数据到文本文件中
跟 前面的 MySQL 到 Excel 中 差不多。
4.5 表输出
1. JSON 输入配置
2. 表输出配置
表输出的时候,如果表不存在,则 点击 生成 表
4.6 插入更新
插入更新就是把数据库已经存在的记录与数据流里面的记录进行比对
- 如果不同就进行更新
- 如果记录不存在,则会插入数据删除
需求:从 new_json 表中读数据,并插入或更新到MySQL t_user_1 中
1. 拖 json 输入 组件,配置 插入更新组件
2. 选择 以 id 作为 更新查询的 字段
谢谢点赞和关注
今天的文章etl kettle教程_比kettle好用的开源etl分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/83257.html