转换之输入组件
输入组件是Kettle里面比较大的分类,输入是ETL里面的E(Extract),主要做的是数据提取的工作。
1. CSV文本输入
CSV文件是一个用逗号分隔的固定格式的文本文件,这种文件的后缀名是.csv,可以用excel或者文本编辑器打开。csv文件输入控件如图所示:
- 步骤名称:可以修改,但在同一个转换里面要保证唯一性,要做到见名知意。
- 文件名:选择对应的csv文件。
- 列分隔符:默认是逗号。
- 封闭性:结束行数据的读写【不用改,不需要了解】。
- NIO缓存大小:文件如果行数过多,需要调整此参数【比如默认5w行,你的文件50w行就手动修改一下】。
- 包含列头行:意思是文件中第一行是字段名称行,表头不进行读写【告诉kettle:我的文件有表头"id"、"name"...】。
- 行号字段:如果文件第一行不是字段名称或者需要从某行开始读写,可在此输入行号。
- 并发运行:选择并发,可提高读写速度。
- 字段中有回车换行?:不要选择,会将换行符做数据读出。
- 文件编码:如果预览数据出现乱码,可更换文件编码。
2. 文本文件输入
文本输入控件常用来提取服务器上的日志信息,使用文本输入控件的步骤:
1)添加需要转换的日志文件
2)按照日志文件格式,指定分隔符
3)获取下字段,并给字段设置合适的格式
4)最后点下预览记录,看看能否读取到数据
3. Excel输入
Excel输入控件也是很常见的输入控件,一般企业会用此控件对大量的excel文件进行ETL操作。使用Excel输入控件步骤如下:
1)按照读取的源文件格式添加指定对应的表格类型为xls还是xlsx
2)选择并添加对应的excel文件
3)获取excel的sheet工作表
4)获取字段,并且给每个字段设置合适的格式
5)预览数据 接下来的步骤中,名称可能会有重复,比如id_1、name_1、age_1等,需要删除。
4. XML输入
XML输入控件使用步骤:
- 获取xml文件,将xml文件添加到kettle中
- 获取xml文档的所有路径,设置合适的循环读取路径
- 获取字段,获得自己想读取的所有字段,并且设置适当的格式
- 预览数据,看看能否读取到自己想要的数据
4.1 添加xml文件
4.2 设置读取内容
在循环读取路径设置xpath内容,点击获取xml文档所有路径按钮可以查看获取情况。
4.3 设置字段
提示
XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。XPath基于XML的树状结构,提供在数据结构树中寻找节点的能力。面列出了常用的路径表达式:
表达式 | 描述 |
---|---|
nodename | 选取此节点的所有子节点 |
/ | 从根节点开始选取 |
// | 从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置 |
. | 选取当前位置 |
.. | 选取当前j节点的父节点 |
@ | 选取属性 |
5. 表输入
表输入可以说是kettle中用到最多的一种输入控件,但是在连接各个数据库之前,我们需要先配置好对应的数据库驱动。比如连接MySQL数据库需要提前将驱动包放到kettle安装目录下面的lib文件夹下,重启客户端Spoon。 重启Spoon后,我们就可以创建对应的数据库了,在转换视图的主对象树目录下,有一个DB连接,右键然后选择新建,再打开数据库连接框,填写正确的数据库信息,然后测试,测试无误后,可以保存此数据库连接。
创建好数据库以后,我们就可以使用表输入控件了,双击表输入控件,选择刚刚创建的数据库连接,然后在SQL框里输入适合的查询语句,然后点击预览,看能否预览到我们期望的数据。
数据库连接创建好后只能在当前转换里面使用,一般我们每次进行设计转换任务都只创建一次数据库连接,可以点击我们创建的连接右键选择共享:
6. Json输入
使用JSON输入控件有如下步骤:
- 浏览获取JSON文件,将json文件获取到kettle中
- 根据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开始 |
[,] | 连接操作符,将多个结果拼接成数组返回,可以使用索引或别名 |
[start: end: step] | 数据切片操作 |
?() | 过滤表达式 |
() | 脚本表达式 |
6.2 使用Json输入组件
- 选择文件
- 设置字段