一、Kettle基本介绍(ETL工具):1、ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于金融IT来说,经常会遇到大数据量的处理,转换,迁移,所以了解并掌握一种ETL工具的使用,必不可少。2、Kettle是一款国外开源的ETL工具,纯Java编写,绿色无需安装,数据抽取高效稳定。Kettle翻译成中文名称应该叫水壶,名字的起源正如该项目的主程序员MATT在一个论坛里说的哪样:希望把各种数据放到一个壶里然后以一种指定的格式流出。Kettle中有两种脚本文件,Transformation和Job,Transformation完成针对数据的基础转换,Job则完成整个工作流的控制。3、Kettle有两种保存方式:一种是资源库方式(数据库)一种是文件形式(XML)4、作业(Job)与转换(Transformation)的区分方法:橙色的为作业,绿色的为转换。注:使用软件的机器必须安装JDK。二、资源库:1、新建资源库:(1)打开kettle之后,出现如图所示界面,点击图中铅笔处(红框处),如果出现该界面后没有图中蓝色的资源库,则可以打开C:\Users\计算机名\.kettle\repositories.xml进行配置(配置文件以repositories和/repositories资源库开始位置和结束位置)。(2)打开之后,界面如下图所示,点击“新建”(如图中红框处);(3)打开之后,如下图所示:a、ConnectionName:连接的名称。b、HostName:资源库IP。c、DatabaseName:资源库实例名。d、UserName:用户名。e、Password:密码。(4)填写完成之后,点击“Test”,结果如下图所示,出现如下图所示的方框,则表示数据库设置正确,否则请检查数据库连接。(5)点击“确定”,点击“OK”,点击“创建或更新”(如下图所示)(6)出现如下图所示提示框之后,点击“是”(7)接下来会出现创建资源库的SQL,有兴趣的可以查看一下,接下里点击“执行”即可,点击“确定”。(8)接下来的将“ID”和“名称”写上,点击“确定”资源库就创建完成了。2、登录资源库和用户管理Repository:资源库UserName:用户名Password:密码(创建资源库后会有一个admin用户,默认密码是admin)新建用户:Tools-资源库-探索资源库-Security如下图点击“添加用户”(),输入要添加的帐户名、密码及描述,点击“OK”即可。三、基本控件的介绍:全局变量:路径win7以后版本在C:\Users\计算机名\.kettle\kettle.property中配置Windowsxp系统在c:\DocumentandSettings\Administrator\.kettle\kettle.property中配置。1、转换(常用控件):输入CSV数据文件输入:进行CSV格式数据文件的输入。文本数据文件输入:进行文本格式数据文件的输入。表输入:数据库表数据输入。Excel输入:进行Excel格式数据文件输入。生成一些空记录或相等的行。获取系统的相关信息输出Excel文件输出。数据输出到数据库中的表中。数据以文本文件格式输出。使用得到的数据更新数据库中的表。将数据插入/更新到数据库中。转换替换字符串中的某些值。增加一个常量。选择需要的字段。值映射。将某些值替换成常量。设置字段的值。Flow分情况判断。空操作,什么也不做。按照某一个条件过滤数据。停止进程。追加流。脚本执行SQL脚本。查询调用DB存储过程。实验写JS代码。2、作业(常用控件):通用作业开始。空操作。作业。转换。作业成功标记。邮件发送邮件。条件查询出的结果条数(主要用来进行判断)。查询一个表是否存在。等待(可以设置等待时间)。脚本执行JavaScript脚本。执行Shell脚本。执行SQL脚本。Utility结束一个Job(终止Job)。Ping一个主机。四、常见问题:1、无效字符:转换中有分号。解决方法:将转换中“表输入”里边的分号去掉。2、更新时报查询不到数据错误。解决方法:选上“忽略查询失败”3、日期变为前一天23:00。经查询发现kettle存在一个问题:目前发现当生日为:1940-6-3、1941-3-15、1986-5-4、1987-4-12、1988-4-10、1989-4-16、1990-4-15、1991-4-14其中的任何一个的时候,kettle转换的时候会默认转换为前一天23:00,因此造成数据库中出现一些垃圾数据。解决方法:在kettle安装目录下的kitchen.bat和spoon.bat文件中增加如下代码:-Duser.timezone=GMT+8代码位置如下图:五、注意事项。1、表输入时不需要添加分号(;);2、当把SQL脚本放入表输入时先预览数据;3、字段名称与目标表不一致时需要手动指定相应的字段(如果一样则不需要手动指定,尽量不要使用SELECT*FROMTABLE)。4、根据数据量大小设置commitsize六、定时任务(kettle4.2)。echooffclscdC:\data-integrationKitchen.bat/rep资源库名/user资源库用户名/pass资源库用户密码/job作业名/dirODS日志位置pause