Skip to content

转换之输入组件

输入组件是Kettle里面比较大的分类,输入是ETL里面的E(Extract),主要做的是数据提取的工作。 Alt text

1. CSV文本输入

CSV文件是一个用逗号分隔的固定格式的文本文件,这种文件的后缀名是.csv,可以用excel或者文本编辑器打开。csv文件输入控件如图所示:
Alt text

  1. 步骤名称:可以修改,但在同一个转换里面要保证唯一性,要做到见名知意。
  2. 文件名:选择对应的csv文件。
  3. 列分隔符:默认是逗号。
  4. 封闭性:结束行数据的读写【不用改,不需要了解】。
  5. NIO缓存大小:文件如果行数过多,需要调整此参数【比如默认5w行,你的文件50w行就手动修改一下】。
  6. 包含列头行:意思是文件中第一行是字段名称行,表头不进行读写【告诉kettle:我的文件有表头"id"、"name"...】。
  7. 行号字段:如果文件第一行不是字段名称或者需要从某行开始读写,可在此输入行号。
  8. 并发运行:选择并发,可提高读写速度。
  9. 字段中有回车换行?:不要选择,会将换行符做数据读出。
  10. 文件编码:如果预览数据出现乱码,可更换文件编码。

2. 文本文件输入

文本输入控件常用来提取服务器上的日志信息,使用文本输入控件的步骤:
1)添加需要转换的日志文件
2)按照日志文件格式,指定分隔符
3)获取下字段,并给字段设置合适的格式
4)最后点下预览记录,看看能否读取到数据
Alt textAlt textAlt text

3. Excel输入

Excel输入控件也是很常见的输入控件,一般企业会用此控件对大量的excel文件进行ETL操作。使用Excel输入控件步骤如下:
1)按照读取的源文件格式添加指定对应的表格类型为xls还是xlsx
2)选择并添加对应的excel文件
3)获取excel的sheet工作表
4)获取字段,并且给每个字段设置合适的格式
5)预览数据
Alt textAlt text 接下来的步骤中,名称可能会有重复,比如id_1、name_1、age_1等,需要删除。 Alt text

4. XML输入

XML输入控件使用步骤:

  1. 获取xml文件,将xml文件添加到kettle中
  2. 获取xml文档的所有路径,设置合适的循环读取路径
  3. 获取字段,获得自己想读取的所有字段,并且设置适当的格式
  4. 预览数据,看看能否读取到自己想要的数据

4.1 添加xml文件

Alt text

4.2 设置读取内容

在循环读取路径设置xpath内容,点击获取xml文档所有路径按钮可以查看获取情况。 Alt text

4.3 设置字段

Alt textAlt text

提示

XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。XPath基于XML的树状结构,提供在数据结构树中寻找节点的能力。面列出了常用的路径表达式:

表达式描述
nodename选取此节点的所有子节点
/从根节点开始选取
//从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置
.选取当前位置
..选取当前j节点的父节点
@选取属性

5. 表输入

表输入可以说是kettle中用到最多的一种输入控件,但是在连接各个数据库之前,我们需要先配置好对应的数据库驱动。比如连接MySQL数据库需要提前将驱动包放到kettle安装目录下面的lib文件夹下,重启客户端Spoon。
Alt text 重启Spoon后,我们就可以创建对应的数据库了,在转换视图的主对象树目录下,有一个DB连接,右键然后选择新建,再打开数据库连接框,填写正确的数据库信息,然后测试,测试无误后,可以保存此数据库连接。 Alt text 创建好数据库以后,我们就可以使用表输入控件了,双击表输入控件,选择刚刚创建的数据库连接,然后在SQL框里输入适合的查询语句,然后点击预览,看能否预览到我们期望的数据。 Alt text 数据库连接创建好后只能在当前转换里面使用,一般我们每次进行设计转换任务都只创建一次数据库连接,可以点击我们创建的连接右键选择共享:
Alt text

6. Json输入

使用JSON输入控件有如下步骤:

  1. 浏览获取JSON文件,将json文件获取到kettle中
  2. 根据JSON Path点记法,获取到需要的字段,并设置合适格式

6.1 JsonPath表达式

JsonPath类似于XPath在xml文档中的定位,JsonPath表达式通常是用来路径检索或设置Json的。其表达式可以接受"dot-notation(点记法)"和"bracket-notation"(括号记法)格式"
点记法:$.store.book[0].title
括号记法:$['store']['book'][0]['title']
具体规则如下:

JsonPath说明
$文档根元素
@当前元素
.或[]匹配下级元素
..递归匹配所有子元素
*通配符,匹配下级元素
[]下标运算符,根据索引获取元素,
XPath从1开始,JsonPath从0开始
[,]连接操作符,将多个结果拼接成数组返回,可以使用索引或别名
[star​t: end: step]数据切片操作
?()过滤表达式
()脚本表达式

6.2 使用Json输入组件

  1. 选择文件 Alt text
  2. 设置字段 Alt text