基本知识
一、Kettle 几个子程序的功能
I.Spoon.bat: 图形界面方式启动作业和转换设计器。
II.Pan.bat: 命令行方式执行转换。
III.Kitchen.bat: 命令行方式执行作业。
IV.Carte.bat: 启动web服务,用于 Kettle 的远程运行或集群运行。
V.Encr.bat: 密码加密
二、输入与输出
输入类步骤用来从外部获取数据,可以获取数据的数据源包括,文本文件(txt,csv,xml, json)数据库、 Excel 文件等桌面文件,自定义的数据等。对特殊数据源和应用需求可以自定义输入插件。输出步骤是输出数据的步骤,常见的输出包括文本文件输出、表输出等,可以根据应用的需 求开发插件以其他形式输出。
二、转换和作业
Kettle 的 Spoon 设计器用来设计转换和作业。转换主要是针对数据的各种处理,一个转换里可以包含多个步骤。作业是比转换更高一级的处理流程,一个作业里包括 多个作业项,一个作业项代表了一项工作,转换也是一个作业项。
三、保存作业
用户通过 Spoon 创建的转换、作业、数据库连接等可以保存在资源库和 XML 文件中。转换文件以 ktr 为扩展名,作业文件以 kjb 为扩展名 。资源库可以是各种常见的数据库。可以在 Spoon 中自动创建资源库,资源库默认用户名和密码是 admin/admin。
简单示例
以上是一个实现源库抽取到目的库kettle程序,并在抽取过程中做到无则增,有则改的增量更新。
I.表输入与表输入3:首先先获取目的库数据表的最近的抽取时间,将作为源库表输入3的输入条件,目的是为了查找源库大于此时间的数据,主要是为了增量更新。
II.表输入2与合并记录:目的表已有数据的输入源,为了对目的库的数据记录做到无则增,有则改。
,flagfiled标记字段,会根据下面的关键字段进行匹配是增或改、依据数据字段进行抽取,若为增相当于目的库无此记录,而源库有此记录,因为以旧数据源为主的合并记录,所以flagfield会被标记为new,相反则是deleted,改是changed。
III.过滤记录:因为要保留目的库新数据比源库多出的数据,所以要对deleted的状态进行变化,防止目的库新数据丢失,
是则改变状态
。
IV.增加常量、增加常量2、获取系统时间,是增加抽取过程中没有涉及的且目的库需要的字段。
V.数据同步、阻塞数据、更新最近抽取时间,数据同步条件配置
,其中多出了一个阻塞数据是因为kettle的SQL脚本是并行执行的,阻塞数据控件起到了数据同步成功后才去执行最新抽取时间的脚本,且要勾选SQL脚本的
。