携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第35天,点击查看活动详情
Kettle输入控件
输入是转换里面的第一个分类,输入控件也是转换中的第一大控件,用来抽取数据或者生成数据。输入是ETL里面的E(Extract),主要做数据提取的工作。
由于Kettle中自带的输入控件比较多,本文只挑出开发中经常使用的几个输入控件来进行讲解,详情如下图。
CSV文件输入
CSV文件是一个用逗号分隔的固定格式的文本文件,这种文件后缀名为.csv,可以用Excel或者文本编辑器打开。在企业里面一般最常见的ETL需求就是将csv文件转换为excel文件,如果用Kettle来做这个ETL工作,就需要用到本章节讲解的CSV文件输入控件。
本章节任务:熟悉CSV文件输入控件,并尝试将CSV文件转换成Excel文件(可参考上面的快速体验案例)。
① 步骤名称:可以修改,但是在同一个转换里面要保证唯一性,见名知意;
② 文件名:选择对应的csv文件;
③ 列分隔符:默认是逗号;
④ 封闭符:结束行数据的读写;
⑤ NIO缓存大小:文件如果行数过多,需要调整此参数;
⑥ 包含列头行:意思是文件中第一行是字段名称行,表头不进行读写;
⑦ 行号字段:如果文件第一行不是字段名称或者需要从某行开始读写,可在此输入行号。
⑧ 并发运行?:选择并发,可提高读写速度;
⑨ 字段中有回车换行?:不要选择,会将换行符做数据读出;
⑩ 文件编码:如果预览数据出现乱码,可更换文件编码;
文本文件输入
提取服务器上的日志信息是公司里ETL开发很常见的操作,日志信息基本上都是文本类型,因此文本文件输入控件是kettle中常用的一个输入控件。使用文本文件输入控件步骤:
1) 添加需要转换的日志文件
2) 按照日志文件格式,指定分隔符
3) 获取下字段,并给字段设置合适的格式
4) 最后点下预览记录,看看能否读到数据
本章节任务:熟悉文本文件输入控件,并新建转换,将txt日志文件转换为Excel文件。
Excel输入
Excel输入控件也是很常用的输入控件,一般企业里会用此控件对大量的Excel文件进行ETL操作。使用Excel输入控件步骤如下:
1) 按照读取的源文件格式指定对应的表格类型为xls还是xlsx
2) 选择并添加对应的excel文件
3) 获取excel的sheet工作表
4) 获取字段,并给每个字段设置合适的格式
5) 预览数据
本章节任务:熟悉Excel输入控件,将excel文件的两个sheet表格的数据重新写到一个新的excel文件中。
XML输入
1)XML简介
XML-可扩展标记语言eXtensible Markup Language,由W3C组织发布,目前推荐遵守的是W3C组织于2000年发布的XML1.0规范。XML用来传输和存储数据,就是以一个统一的格式,组织有关系的数据,为不同平台下的应用程序服务。
2) XPath简介
XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。
XPath 使用路径表达式在 XML 文档中选取节点。下面列出了最有用的路径表达式:
2) XML输入控件
了解XML和XPath概念以后,我们要开始学习Kettle的XML输入控件,企业里经常用此控件进行XML文件的ETL操作。
1. 浏览获取xml文件,将xml文件添加到kettle中
2. 获取xml文档的所有路径,设置合适的循环读取路径
3. 获取字段,获得自己想要读取的所有字段,并且设置适当的格式
4. 预览数据,看看能否读取到自己想要的数据
本章节任务:熟悉XML输入控件,将XML文件的学生数据写到excel文件中。
JSON输入
1)JSON简介
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。JSON对象本质上就是一个JS对象,但是这个对象比较特殊,它可以直接转换为字符串,在不同语言中进行传递,通过工具又可以转换为其他语言中的对象。
JSON核心概念:数组、对象、属性。
数组: [ ]
对象: { }
属性:key:value
2)JSON Path
JSONPath类似于XPath在xml文档中的定位,JsonPath表达式通常是用来路径检索或设置Json的。其表达式可以接受“dot–notation”(点记法)和“bracket–notation”(括号记法)格式
点记法:$.store.book[0].title
括号记法:$[‘store’][‘book’][0][‘title’]
1) JSON输入控件
了解JSON格式和JSON Path以后,我们要学习使用JSON输入控件,JSON控件也是企业里做ETL常用的控件之一。
1. 浏览获取JSON文件,将json文件获取到kettle中
2. 根据JSON Path点记法,获取到需要的字段,并且设置合适格式
本章节任务:获取到JSON文件里面的id,field,value字段,写到excel文件中。
表输入
1)创建数据库连接
表输入可以说是kettle中用到最多的一种输入控件,因为企业中大部分的数据都会存在数据库中。kettle可以连接市面上常见的各种数据库,比如Oracle,Mysql,SqlServer等。但是在连接各个数据库之前,我们需要先配置好对应的数据库驱动,本教程以mysql为例,给大家讲解kettle连接mysql数据库的过程。
首先我们要将对应版本的mysql连接驱动放到kettle安装目录下面的lib文件夹下,然后重启kettle的客户端Spoon
重启Spoon客户端以后,我们就可以创建对应的数据库连接了,在转换视图的主对象树目录下,有个DB连接,右键然后选择新建,在打开数据库连接框里,填写正确的数据库信息,然后测试,测试无误后,可以保存此数据库连接。
数据库连接默认只对本转换有效,换一个转换以后,这个连接就没法用了,还需要新建数据库连接,所以我们需要将建好的这个数据库连接进行共享下,共享以后,其他的转换也能用我们提前建好的这个数据库连接了。
2)表输入
创建好数据库连接以后,我们就可以使用表输入控件了,双击表输入控件,选择刚刚创建的数据库连接,然后在SQL框里输入合适的查询语句,然后点击预览按钮,看能否预览到我们期望的数据。
本章节任务:根据自己的集群环境,创建数据库连接,然后使用表输入控件将student表的数据写到excel中。