目录

一、Kettle介绍

二、Kettle安装、配置

1、下载Kettle

2、解压Kettle

3、双击spoon.bat 启动spoon     启动时间 有点久  耐心等待

三、Kettle入门案例

1、需求 

2、 数据源

3、 具体实现

3.1 拖csv文件输入,Excel输出

3.2  shift 按住 鼠标左键单击 连线

3.3 单击 CSV 输入文件,Excel 输出,设置文件信息 

3.4 启动执行

四、Kettle输入/输出组件

1、输入组件

4.1 JOSN数据文件输入

4.2 表输入

4.3 生成记录

2、输出组件

4.4 文本文件输出

4.5 表输出

4.6 插入更新


一、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  作为  更新查询的 字段

谢谢点赞和关注

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐