1.CSV文件转换为excel文件
选择文件-新建-转换
crtl+s 保存,给这个转换起个名字
在输入中选择CSV文件输入
在输出中选择excel文件输出
点击CSV文件输入-按住shift-拖动鼠标到excel输出就可以了
双击CSV文件输入
输入你的步骤名称
选择浏览,找出你要转换的CSV文件
点击获取字段,可以看到你CSV文件中的内容
点击确定后点击excel输出
点击浏览
选择你要输出文件的位置
给excel起个文件名字
点击字段
点击获取字段
然后点击运行
去输出文件中去查看,三列字段的精度有些问题
然后去excel输出中点击字段
把格式调整为如下;
重新运行,然后再去excel输出中查看,问题已经解决
2.文本文件转换为excel文件
先点击文本文件输入的浏览,再点击增加
点击内容中的分隔符,确认文本文件中的分隔符和内容中的分隔符是否一致
点击字段中的获取字段,查看内容是否正确
然后excel输出就类似了,点击浏览,获取字段------
3.excel文件转换为excel文件
先看你的excel文件是xls还是xlsx结尾的
然后选择表格类型,在浏览表格,点击增加
点击字段,点击获取字段
这么多字段的原因是源文件中有两个sheet页
删除下面的sheet页中的字段即可
4.excel文件转换为excel文件(多文件合并)
源文件是这样的
1.
2.
3.这两个文件的路径
开始合并操作
选择浏览最外层的文件,然后点击增加
然后文件的位置写到最外层文件的位置
通配符写法是几个文件通用的地方写好加上*号
是否包含子目录:这个非常重要,选择是,实际开发中文件肯定是存在多个目录下的
输出的时候参考上面的excel输出即可
5.get data from xml文件转换为excel文件
需求:获取testDescription、rowID、v1、v2
分析:testDescription、rowID是属性,v1、v2是节点
源文件如下;
<?xml version="1.0" encoding="UTF-8"?>
<AllRows testDescription="1 - simple functionality test">
<Rows rowID="1">first row chunk of data
<Row><v1>1.1.1</v1><v2>1.1.2</v2></Row>
<Row><v1>1.2.1</v1><v2>1.2.2</v2></Row>
</Rows>
<Rows rowID="2">second row chunk of data
<Row><v1>2.1.1</v1><v2>2.1.2</v2></Row>
<Row><v1>2.2.1</v1><v2>2.2.2</v2></Row>
</Rows>
<Rows rowID="3">third row chunk of data
<Row><v1>3.1.1</v1><v2>3.1.2</v2></Row>
<Row><v1>3.2.1</v1><v2>3.2.2</v2></Row>
</Rows>
</AllRows>
点击浏览,点击增加
这里填写的非常重要
先填写读取的文件的路径
然后填写节点或者属性的路径
后面输出到excel中不做介绍了
6.json文件转换为excel文件
需求:从json文件中提取id、field和value数据到excel
源数据:
{
"status": "ok",
"response": {
"submissions": [
{
"id": "59434767",
"timestamp": "2011-11-21 09:21:53",
"user_agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0",
"remote_addr": "192.168.1.1",
"payment_status": "",
"data": [
{
"field": "13776121",
"value": "Baylor Dallas"
},
{
"field": "13776401",
"value": "CHF"
},
{
"field": "13777966",
"value": "John Doe"
},
{
"field": "13780027",
"value": "9999"
},
{
"field": "13778165",
"value": "None of the above"
},
{
"field": "13778985",
"value": "Yes"
},
{
"field": "13778280",
"value": "Yes"
},
{
"field": "13778424",
"value": "Yes"
},
{
"field": "13778290",
"value": "Yes"
},
{
"field": "13778324",
"value": "Yes"
},
{
"field": "13778864",
"value": "Yes"
}
]
},
{
"id": "59474875",
"timestamp": "2011-11-21 17:01:22",
"user_agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0",
"remote_addr": "192.168.1.1",
"payment_status": "",
"data": [
{
"field": "13776121",
"value": "Healthsouth,"
},
{
"field": "13776401",
"value": "Pneumonia"
},
{
"field": "13777966",
"value": "Jane Doe"
},
{
"field": "13780027",
"value": "390"
},
{
"field": "13778165",
"value": "Experienced a fall?"
},
{
"field": "13861153",
"value": "Yes"
},
{
"field": "13780018",
"value": "Yes"
},
{
"field": "13780006",
"value": "No"
},
{
"field": "13780023",
"value": "Yes"
},
{
"field": "13780024",
"value": "Yes"
}
]
}
],
"total": 2,
"pages": 1
}
}
需要分两步走:
第一步:获取data
第二步:从data中获取field和value
点击浏览,点击增加
填写字段相关内容如下;
第二个json输入是从第一个中的字段中获取的,所以这么写
填写字段
输出到excel不做介绍了
7.生成记录
需求:生成10000条数据
8.表输入
需求:从MySQL数据库的wzx库的user表数据导入到excel中
前提是先把连接MySQL的jar包放到kettle的\data-integration\lib目录下
点击新建:填写相关的MySQL的相关信息,然后点击测试按钮
点击测试后,显示如下,测试通过
注意:MySQL的jar包的版本要和你安装的MySQL的版本相对应
点击获取SQL查询语句
EXCEL输出
1.表输入到excel和microExcel中
当我们画箭头到第二个excel时,会弹出如下,默认是选择分发,这里我们选择复制
2.表输入到文本文件txt和csv中
3.共享MySQL数据库
右键这个MySQL,选择共享即可
4.SQL文件输出
SQL文件输出其实就是导出数据库表的结构和数据
在sql文件输出中填写下面的内容即可,根据自己的需求决定是选择建表语句还是清空表的语句
5.表输出
excel输入和表输出
在表输出中先选择一个数据库,在选择一张表,如果表不存在的话就点击sql,可以新建一张表
然后选择指定数据库字段
6.更新
当更新的时候,如果数据量不一致,会报错,选择忽略查询失败会正常执行
获取字段是选择根据哪个字段进行更新
获取更新字段是决定要更新哪些字段
如果
7.插入更新
跟更新一样,就是选择的图标不一样
8.删除
输入为自定义常量
删除中执行数据库和数据库的表,还有根据谁来进行删除
kettle转换控件
1.concat fields
如下图所示;
点击concat fields,先定义一下新字段的名字,再定义一下拼接符就可以了
2.值映射
系统1:1-男 2-女
系统2:f-男 m-女
数据仓库统一为 female-男 male-女
3.增加常量
表中新增一列,是常数列
4.增加序列
增加一列,字段名称为id,起始值为1,每步为1
5.字段选择
把id改成key
把age的列进行删除
6.计算器
计算两列的和,根据自己的业务选择即可
7.字符串的剪切、替换、操作
源文件是这样的
剪切字符串
字符串替换
字符串操作
去除左右两边的空格,并且变成大写
输出结果如下;
8.去除重复记录
注意:去除重复记录时,需要先对数据进行排序
源文件如下
先排序
去除重复记录
最后输出如下;
9.唯一行(哈希值)
注意:唯一行(哈希值)的执行效果和上面的是一样的,但是效率要高于上面的
10.拆分字段
拆分name字段为lastname和firstname,以空格进行分隔
11.列拆分为多行
12.列转行
注意:列转行也是需要先进行排序
从excel中读取数据,按照姓名进行分组,把星期,工作小时从列转为行,并保存在excel中
源文件如下;
填写如下;
13.行转列
源数据
填写数据如下;
14.行扁平化
注意:最好先做一个排序操作
源数据
填写数据如下
应用控件
1.替换NULL值
2.写日志
看输出结果如下;
kettle流程控件
1.switch case
需求:把sex字段为1、0、2的分别输出到三个文件中
填写如下,
填写的步骤,先填写excel输入,再填写excel输出,最后填写switch case
2.过滤记录
源数据
填写如下
3.空操作
4.终止
一般用来校验数据是否为空
kettle查询控件
1.数据库查询
需求:从employees表中读取数据,根据dep_id从departments表获取dep_name,保存到excel中
数据库查询中填写如下;
2.数据库连接
需求:从departments表中读取数据,连接到另外一个数据库的employees,把数据保存到excel中
注意:下面的SQL是手动写的
3.流查询
流查询是在查询前把数据都加载到内存中,并且只能进行等值查询
kettle连接控件
1.合并记录
合并记录是用于将两个不同来源的数据合并,这两个来源的数据分别为旧数据和新数据,该步骤将旧数据和新数据按照指定的关键字匹配、比较、合并
标志字段:identical-旧数据和新数据一样
changed-数据发生了变化
new-新数据中有而旧数据中没有记录
deleted-旧数据中有而新数据中没有
关键字段:用于定位两个数据源中的同一条记录
注意:
1.旧数据和新数据需要事先按照关键字段排序
2.旧数据和新数据要有相同的字段名称
2.记录关联(笛卡尔积输出)
3.记录集连接
记录集连接就像数据库的左连接、右连接、内连接、外连接
kettle统计
分组
注意:分组之前需要先进行排序
kettle映射
映射是用来定义子转换,便于封装和重用
需求:从t_orders表中获取数据,根据u_id查询t_user表,获取用户的信息,并把数据保存到excel中
先写上注释,在输入规范中填写如下;
数据库查询中填写如下;
然后再这个转换中把上面的子转换保存的路径选上