ETL工具kettle学习总结
- 格式:pdf
- 大小:1.03 MB
- 文档页数:31
KETTLE使用自己总结的Kettle使用方法和成果说明简介Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix 上运行,绿色无需安装,数据抽取高效稳定。
Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出.Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做.Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。
Kettle可以在http://kettle。
pentaho。
org/网站下载到。
注:ETL,是英文Extract—Transform—Load 的缩写,用来描述将数据从来源端经过萃取(extract)、转置(transform)、加载(load)至目的端的过程.ETL一词较常用在数据仓库,但其对象并不限于数据仓库。
下载和安装首先,需要下载开源免费的pdi-ce软件压缩包,当前最新版本为5.20。
0。
下载网址:/projects/pentaho/files/Data%20Integration/然后,解压下载的软件压缩包:pdi—ce—5。
2.0.0—209.zip,解压后会在当前目录下上传一个目录,名为data—integration。
由于Kettle是使用Java开发的,所以系统环境需要安装并且配置好JDK。
žKettle可以在http:///网站下载ž下载kettle压缩包,因kettle为绿色软件,解压缩到任意本地路径即可。
运行Kettle进入到Kettle目录,如果Kettle部署在windows环境下,双击运行spoon.bat或Kettle.exe文件.Linux用户需要运行spoon。
sh文件,进入到Shell提示行窗口,进入到解压目录中执行下面的命令:# chmod +x spoon。
数据抽取工具Kettle实践经验小结杭州州力数据-陈力同步数据常见的应用场景包括以下4个种类型:1.只增加、无更新、无删除 (1)2.只更新、无增加、无删除 (3)3.增加+更新、无删除 (4)4.增加+更新+删除 (5)5.调用存储过程 (7)1无参数输入: (7)2、有参数输入 (8)1.只增加、无更新、无删除对于这种只增加数据的情况,可细分为以下2种类型:1) 基表存在更新字段。
通过获取目标表上最大的更新时间或最大ID,在“表输入”步骤中加入条件限制只读取新增的数据。
这里要注意的是,获取最大更新时间或最大ID时,如果目标表还没有数据,最大值会获取不了。
其中的一个解决方法是在“获取最大ID”步骤的SQL中,加入最小日期或ID的联合查询即可,如:SELECT MAX(ID) FROM(SELECT MAX(ID) AS ID FROM T1 UNION ALL SELECT 0 AS ID FROM DUAL)2) 基表不存在更新字段。
通过“插入/更新”步骤进行插入。
插入/更新步骤选项:2.只更新、无增加、无删除通过“更新”步骤进行更新。
更新选项:3.增加+更新、无删除通过“插入/更新”步骤进行插入。
区别是“插入/更新步骤”中的选项,去掉“不执行任何更新”的勾选:4.增加+更新+删除这种数据同步情况,可细分为以下2种情况:1) 源库有表保存删除、更新和新增的信息。
通过条件判断,分别进行“插入/更新”和“删除”即可,如下图所示。
2) 源库没有保存增删改信息Kettle提供了一种对比增量更新的机制处理这种情况,可通过“合并记录”步骤实现,该步骤的输入是新旧两个数据源,通过关键字进行数据值比对,对比结果分为以下4种类型:“Identical” : 关键字在新旧数据源中都存在,域值相同“changed” : 关键字在新旧数据源中都存在,但域值不同“new” :旧数据源中没有找到关键字“deleted”:新数据源中没有找到关键字两个数据源的数据都进入下一步骤,上述4种结果类型作为输出表的标志字段进行保存。
KETTLE使用经验总结《kettle使用经验总结》目录1. 软件安装 (1)1.1.安装说明 (1)1.2.安装JDK (1)1.3.安装PDI (1)1.4.创建资源库 (2)1.5.修改配置文件 (3)1.6.启动服务器 (6)2. 操作说明 (7)2.1.运行转换/作业 (7)2.2.转换的并行 (7)2.3.作业的并行 (9)2.4.集群的使用 (9)2.5.记录日志 (11)2.6.连接HBASE (16)2.7.读取XML文件 (26)2.8.连接HIVE2 (31)2.9.大字段处理 (35)3. 性能优化 (39)《kettle使用经验总结》3.1.利用好数据库性能 (39) 3.2.用并行或者集群解决好数据插入瓶颈 (40)3.3.增大提交的记录数及大字段数据处理 (40)3.4.全量抽取先抽取后建索引 (41)3.5.增量抽取注意去重数据量 (41)3.6.利用中间表分段处理数据 (42)3.7.聚合优先 (43)4. 常见问题解决 (43)4.1.大量数据抽取导致内存溢出 (43)4.2.字段值丢失 (43)4.3.输出记录数大于输入记录数 (43)《kettle使用经验总结》1.软件安装1.1.安装说明本文档对应的产品及版本是pdi-ce-5.4.0.1-130。
由于该产品使用java 开发,所以需要在服务器上配置java环境。
如果是linux系统,为了操作方便,可以在linux上部署服务器,Windows启动客户端。
1.2.安装jdk下载jdk1.7或以上安装包,安装成功后,配置java环境变量。
JAVA_HOME: java安装目录CLASSPATH:%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\ tools.jarPATH:添加%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;LINUX下配置环境变量:进入/etc/profile(系统)或.bash_profile(用户)export JAVA_HOME=/usr/local/java/jdk1.8.0_60export PATH=$JAVA_HOME/bin:$PATHexportCLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar配置完成后检查java -version 和$JAVA_HOME是否启用1.3.安装PDI地址/projects/data-integration/下载P DI二进制文件pdi-ce-5.4.0.1-130.zip到各服务器中并解压,data-integration目录里面包含了PDI所有内容。
kettle实验总结我们来了解一下kettle的基本概念和功能。
Kettle是一款基于图形化界面的工具,通过可视化的方式帮助用户构建数据整合和转换的过程。
它提供了丰富的组件和功能,用户可以通过拖拽组件、设置参数和连接组件的方式来构建数据处理流程。
Kettle支持多种数据源和格式,包括关系型数据库、文件、Web服务等,用户可以方便地从不同的数据源中提取数据,并进行预处理、转换和加载。
接下来,我们将探讨如何使用kettle进行数据整合和转换的实验。
在实验前,我们需要准备好数据源和目标数据库,并确保kettle已经正确安装和配置。
首先,我们需要创建一个kettle的工作空间,并在工作空间中创建一个转换(Transformation)。
转换是kettle 中的基本单位,它由一系列的步骤(Step)组成,每个步骤都是一个数据处理的单元。
在转换中,我们可以使用多个步骤来完成不同的数据处理任务。
例如,我们可以使用"输入"步骤从源数据库中提取数据,然后使用"过滤"步骤对数据进行筛选,再使用"转换"步骤进行数据转换,最后使用"输出"步骤将结果加载到目标数据库中。
在每个步骤中,我们可以设置相应的参数和选项,以满足具体的数据处理需求。
除了基本的数据处理步骤,kettle还提供了丰富的功能和插件,用于处理更复杂的数据转换任务。
例如,我们可以使用"维度表输入"步骤来处理维度表的数据,使用"合并记录"步骤来合并不同数据源的记录,使用"数据校验"步骤来验证数据的完整性等。
通过灵活地组合和配置这些步骤,我们可以实现各种复杂的数据整合和转换任务。
在进行实验时,我们还可以使用kettle提供的调试和监控功能,以确保数据处理流程的正确性和性能。
例如,我们可以使用"调试"功能逐步执行转换,并观察每个步骤的输入和输出结果,以及中间数据的变化情况。
Pan命令来执行转换,下面给出的是pan参数。
Kitchen 命令用于执行作业Carte 用于添加新的执行引擎Kettle的资源库和Carte的登录,密码都是用Encr加密的。
使用中遇到的问题及总结:这两个组件用之前必须先对数据进行排序,否则数据会不准确。
而且merge join会很慢,尽量要少用。
这个组件默认auto commit false,所以如果要执行一些sql,必须在后面加commit。
貌似没什么用,其实也没什么用。
Kettle讲究有进有出,如果最后的没有输出,要加上这个空操作。
实际上测试不写也没问题。
执行java script,这个组件很强大,大部分用组件实现不了的东西,都可以通过这个来转换。
而且可以调用自己写的java 类。
强大到不行~这个组件很奇怪,顾名思义调用存储过程的,但实际上不能调用不传参数的存储过程。
如果有没有参数的存储过程,现在的解决方案是用sql脚本来执行。
一个设置变量,一个获得变量。
这个本来没什么要说的,但在实际应用中发现,在一个trans中设置的变量,在当前trans中并不一定能获得到,所以设计的时候先在一个trans中设置变量,然后在后续的trans中来获得就可以了。
让人惊喜的东西,大数据量导入,事实上让人近乎绝望,研究了一天依旧不会用。
而且我怀疑确实不能用。
其实这个组件无非是实现了copy命令,目前的解决方案,sql脚本,先汗一个,不知道跟这些组件相比效率会怎样。
三个亲兄弟,功能差不多,长的也很像,看了源码感觉,性能有差异,就性能而言,文本文件输入组件很差,它不如csv file input和fixed file input组件,因为后面的两者启用了java nio技术。
顺便提一句而已。
kettle内置性能监控,通过分析能知道哪一环节出现瓶颈。
以上是trans的内容,关于job相比而言简单一些,只是调用trans而已。
值得一说的是job 以start开始,这个start只能有一个。
kettle面试题总结
1. Kettle是什么?它的主要作用是什么?
Kettle是一款开源的ETL工具,用于数据的抽取、转换和加载。
它可以从多种数据源中提取数据,对数据进行清洗、转换和合并,然后将数据加载到目标数据库或文件中。
Kettle可以帮助用户快速、高效地处理大量数据,提高数据处理的效率和准确性。
2. Kettle的核心组件有哪些?每个组件的作用是什么?
Kettle的核心组件包括:Spoon、Pan、Carte和Kitchen。
Spoon 是图形化界面,用于设计和管理转换和作业;Pan是命令行界面,用于执行转换和作业;Carte是自定义脚本引擎,用于扩展Kettle的功能;Kitchen是作业调度和监控工具,用于管理和维护Kettle的作业。
3. Kettle支持哪些数据源?如何配置数据源?
Kettle支持多种数据源,包括关系型数据库(如MySQL、Oracle 等)、非关系型数据库(如MongoDB、HBase等)、文件(如CSV、XML等)等。
在配置数据源时,需要在Spoon或Pan中选择相应的数据源类型,并填写相应的连接信息,如数据库地址、用户名、密码等。
4. Kettle如何处理数据转换?
Kettle使用转换(Transformation)来处理数据转换。
转换是一个由多个步骤组成的流程,每个步骤都可以对数据进行处理和操作。
用户可以在Spoon中设计和编辑转换,通过拖拽和配置各种步骤来实现数据的转换和处理。
基于现在接触的ETL⼯具(datax和kettle)做个⼩总结现阶段需要做数据库同步⼯作,⽬前调研了两个⼯具datax和kettle⽬前虽然环境使⽤的是kettle+jenkins调度平台⽅案,但是多多少少会有⼀些不太令⼈满意的地⽅,但应该算是满⾜⼤部分需求了,先暂时这样实现这两者各有优缺点,基本的就不总结了。
现在说说⼀些关键点:基本⽅⾯:1.datax适合做数据同步⼯作;kettle适合数据清洗,转换⼯作⽬前成型的可视化界⾯,datax推荐datax web,kettle后期维护⽤的界⾯推荐jenkins/kettle-manager简单2.datax对于数据库压⼒⽐较⼩,全量读取速度优于kettle3.对于⼀些⽅案的可⾏性,⼩数据量的选择全量对⽐,10w数据量⼤概3s完成插⼊更新全量抽取过程,还是⽐较快的。
⼩数据量的情况下差别不⼤4.⽬前⽣产可⾏⽅案可以选择datax+datax web/kettle6.⽇志⽅案是对于⼤量数据的最优选择,mysql⽤maxwell抓取⽇志或者上边提供的⽅案,oracle⽤ogg,sqlserver⽬前不清楚需要再找7.保证kettle后期稳定的情况下⽤windows⾃带的定时任务或者Linux中⽤crontab,不过后续的jenkins完全能胜任贴上链接:wgetftp:///mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/matthewdva:/build:/EPEL:/el7/RHEL_7/x86_64/webkitgtk-2.4.9-1.el7.x86_64.rpmyum install webkitgtk-2.4.9-1.el7.x86_64.rpm9.docker部署mysql10.部署jenkins进⾏配置⽂件配置,在 etc/sysconfig/jenkins⾥改端⼝#修改jenkins镜像⽂件cd ~/.jenkins/updates⼀些⼩坑:mysql 8.0驱动jar包⽅⾯更换,导致不能⽤,需要注意驱动#所有命令找不到export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin#刷新环境变量:source /etc/profile#给脚本赋予权限:chmod +x ./data-integration/*.shdatax⽤的python版本要注意,2.6+版本和3.0+版本有语法差别(记得是括号问题)centos 7可以通过添加打印机⽅式避免开机总是⿊屏部署kettle和jenkins会存在⼀些坑#书写sh脚本时候在脚本⾥⾯添加source /etc/profile即可11.关于调度平台问题,⽬前如果想要放⼊docker容器⾥⾯然后再放⼊集群中有难度,使⽤某个服务上xxl-job调度,carte.sh⽅法还得提供个ip地址,或者xml⽂件,⽬前没想到怎么实现,⽬前可能⽅法可能是⽤docker库⾥的kettle镜像,⾃⼰⽣成⼀个,或者⾃⼰通过源码⽣成⼀个docker file⽂件,打包完成后再进⾏部署12.⽬前8.0版本和8.2版本有差异,⽣成的镜像⽂件再运⾏job⽂件可能存在问题,⽽docker库⾥⾯的8.3版本可以运⾏8.2版本13.如果是从接⼝获取数据的⽅式,并且接⼝调⽤频率有限制可以通过这种⽅式(中间加个等待时间)然后获取的也是系统时间和时间戳存放的时间中间数据量,这样可以变化的获取页数和对应的所有数据,针对接⼝返回404情况,可以获取唯⼀标识存放到临时表⾥,然后再遍历这个唯⼀标识去做⼆次请求,这样如果实时更细数据量不多的情况下,其实可以⽤先从临时表⾥获取对应的404对应的唯⼀标识,然后先看看原数据⾥⾯有没有,如果没有的话则会进⼊插⼊更新,虽然这个组件很慢,但是对于已经在前边进⾏排除了,只是进⾏更新对⽐,所以实质上数据量并不⼤进⾏全量⽐对⽅式也是可⾏的(⽬前⽅法只是针对⽬前做的东西,通⽤的其实还是⽇志的效果好,但是难度⼤⼀些,需要再研究)重点是这⼏个转换⽅案太蠢了,步骤过多影响速度,还好现在⽤时间戳,并⾏所有job只⽤37-45s左右,但是数据量⼀⼤就有问题了不适合做现在或者以后的最佳⽅案,所以只做思路参考14.其实清洗最优⽅案还是通过python去处理,或者使⽤data-web的⽅式,那个是在git上有源码,并且结合的正好是xxl-job调度平台,可以使⽤这个调度平台+整合数据的⽅案16.关于部署到阿⾥云服务器的上的问题,⼀定⼀定要添加安全组,不然会报错,并且CONVERT_TO_NULL是可以使⽤。
kettle使⽤总结Kettle使⽤笔记⼀、基本概念:1.1、资源库保存kettle脚本或转换、存放数据库连接的地⽅,可以建⽴多个数据库连接,使⽤时就⽆需每次重复建⽴1.2、数据库连接(db links)连接数据库的功能,需处理数据库中的数据时创建,可连接Oracle、SqlServer、MySQL、DB2等1.3、转换(trans)处理数据的ETL过程,⾥⾯存放许多处理数据的组件,完成后保存会⽣成⼀个ktl⽂件。
1.4、作业(job)⾃动、定时执⾏转换的步骤的名称,可以在⾃动执⾏转换的过程添加参数进⾏控制。
1.5、步骤(steps)转换和作⽤的每个操作都是⼀个步骤。
⼆、⼯具栏:2.1、资源库概念保存kettle脚本或转换的地⽅,相当于myeclipes的workspace,另⼀种保存kettle脚本或流程的⽅法是需要保存的时候⽤⽂件保存,点击另存为出现(PS:打开kettle的时候加载的也是资源库)2.2、资源库位置Tools -> 数据库-> 连接数据库2.3、数据库连接创建数据库连接的时候会同时创建数据库连接?右键点击新建转换-> 点击主对象树-> 右键DB连接->新建数据库连接(PS:创建数据库后可以点击Test 判断数据库连接创建成功了没!,Oracle RAC 环境下的数据库连接创建数据库连接的⽅法不同)三、基本操作:3.1、轮流发送模式和复制发送模式的区别如果获取的数据必须同时进⾏多步处理(⼀种⽅式是将数据复制后处理,⼀种是获取的数据进⾏轮流的间隔处理),设置⽅式为:选中Data Grid –> 点击右键–> 数据发送-> 选择轮流发送模式或复制发送模式下图为复制处理的⽅式:红框选中的标签为复制处理3.2、分离步骤的⽅法⽐如下图中分离出步骤”删除”的⽅法:选中”删除”->点击右键-> 点击分离步骤3.3、过滤错误数据的⽅法采集的数据保存到数据库的时候如果有错误就,整个ETL处理流程就会停⽌,可以⽤过滤错误的⽅法将错误的数据写到⽂本中,保证ETL流程继续执⾏步骤:在连接”表输出”和“⽂本⽂件输出2”的时候选择”Error Handing of step”效果如下图(PS:可以明确是哪个字段,那条数据出现的错误)3.4、查询步骤中数据详情的⽅法⽐如查看下图中”表输出”步骤的数据情况的步骤:选中”表输出” -> 点击右键-> 选择显⽰输⼊\输出字段四、转换组件介绍:4.1、核⼼对象-输⼊⽬录下组件4.1.1、表输⼊组件及属性4.1.1.1允许延迟转换像Oracled的BLOB类型字段,需要的时候开始不加载这些数据,最后输出的时候才进⾏4.1.1.2 替换SQL语句⾥的变量(只在Job⾥⾯应⽤)配置需注意的地⽅:1、SQL语句的条件必须⽤${}符合关联起来2、替换SQL语句⾥的变量必须勾选3、Job中的参数组件的设置及转换必须指明是哪个转换4.1.1.3 从步骤插⼊数据配置需注意的地⽅:1、从”获取系统信息”组件中输⼊的参数名称必须和表输⼊的字段名相同2、表输⼊的where 条件中的值⽤”?”代替3、从步骤插⼊数据必须勾选4、获取系统信息组件中的参数类型必须选“命令⾏参数1”5、执⾏JOB后,在参数输⼊栏中输⼊你的参数值4.1.1.4 表输⼊组件⾥的执⾏每⼀⾏?(必须和从步骤插⼊数据选项⼀起使⽤)配置需注意的地⽅:1、从”DataGrid”组件中输⼊的参数名称必须和表输⼊的字段名相同.且该字段有多个值2、表输⼊的where 条件中的值⽤”?”代替3、从步骤插⼊数据、执⾏每⼀⾏?两个选项必须勾选4.1.1.5 记录数量限制如果查询的数据有多条,可选择”记录数量限制”选项进⾏查询数据的数量进⾏限制,⽐如只取100条。
kettle常用的记录处理心得
kettle常用的记录处理心得
在使用Kettle数据集成工具时,我们经常需要对数据进行记录处理,以便更好地进行数据分析和应用。
下面是我在使用Kettle的过程中总结的一些记录处理的心得:
1. 去重复:使用Kettle的“去重复”步骤可以帮助我们去掉重复的记录。
我们选择需要去重复的字段为主键,然后在处理过程中进行比较和过滤即可。
2. 过滤记录:使用Kettle的“过滤记录”步骤可以帮助我们排除不需要的记录,比如为空或特定数值的记录。
在过滤的过程中,我们可以使用正则表达式或自定义脚本进行过滤。
3. 合并记录:使用Kettle的“合并记录”步骤可以帮助我们将多个记录合并成一个记录。
在合并的过程中,我们需要选择合并的字段,并且可以根据需要拼接或聚合字段值。
4. 分割记录:使用Kettle的“分割记录”步骤可以帮助我们将一个记录分割成多个记录。
在分割的过程中,我们可以选择分割的方式,比如按照指定的分割符或按照字段值。
5. 排序记录:使用Kettle的“排序记录”步骤可以帮助我们对记录进行排序,以便更好地进行后续的数据分析和应用。
我们可以选择需要排序的字段和排序的方式,比如升序或降序。
总之,在使用Kettle处理记录时,我们需要根据数据的实际情况选择合适的处理方式,并在处理的过程中注意数据类型的转换和数据精度的保留,以便保证处理结果的准确性和可靠性。
在实践中多尝试,多摸索,相信你会有更多的记录处理心得。
概览Kettle也叫PDI(全称是Pentaho Data Integeration),是一款开源的ETL工具,项目开始于2003年,2006年加入了开源的BI 组织Pentaho, 正式命名为PDI。
官方网站:/术语1.Transformation转换步骤,可以理解为将一个或者多个不同的数据源组装成一条数据流水线。
然后最终输出到某一个地方,文件或者数据库等。
2.Job作业,可以调度设计好的转换,也可以执行一些文件处理(比较,删除等),还可以ftp上传,下载文件,发送邮件,执行shell命令等,3.Hop 连接转换步骤或者连接Job(实际上就是执行顺序)的连线Transformation hop:主要表示数据的流向。
从输入,过滤等转换操作,到输出。
Job hop:可设置执行条件:1,无条件执行2,当上一个Job执行结果为true时执行3,当上一个Job执行结果为false时执行Kettle,etl设计及运行1.Kettle整体结构图Kettle整体结构图2.转换设计样例图绿色线条为hop,流水线转换设计样例3.运行方式使用java web start 方式运行的配置方法命令行方式1)Windows下执行kitchen.bat,多个参数之间以“/”分隔,Key和value以”:”分隔例如:kitchen.bat /file:F:\samples\demo-table2table.ktr /level:Basic /log:test123.log/file:指定转换文件的路径/level:执行日志执行级别/log: 执行日志文件路径2)Linux下执行kitchen.sh,多个参数之间以“-”分隔,Key和value以”=”分隔kitchen.sh -file=/home/updateWarehouse.kjb -level=Minimal如果设计的转换,Job是保存在数据库中,则命令如下:Kitchen.bat /rep:资源库名称/user:admin /pass:admin /job:job名4.Xml保存转换,job流程设计用户定义的作业可以保存在(xml格式)中或某一个特定的数据库中转换的设计文件以.ktr结尾(xml文格式),保存所有配置好的数据库连接,文件相对路径,字段映射关系等信息。
Job的设计文件以.kjb结尾,下面是一个调用已经设计好的转换的job文件的一部分:<entry><name>demo test</name><description>Transformation</description><type>TRANS</type><filename>${Internal.Job.Filename.Directory}/demo-table2table.ktr</filename> <transname>load customer data job</transname><directory>${Internal.Job.Filename.Directory}</directory><arg_from_previous>N</arg_from_previous><exec_per_row>N</exec_per_row><clear_rows>N</clear_rows><clear_files>N</clear_files><set_logfile>N</set_logfile><logfile/><logext/>………</ entry >5.数据库保存转换,job流程列出几个重要的表1)r_job: 保存job的id,name,status,执行时间,创建时间,修改时间等信息建表语句:DROP TABLE IF EXISTS `r_job`;CREATE TABLE `r_job` (`ID_JOB` bigint(20) NOT NULL,`ID_DIRECTORY` int(11) DEFAULT NULL,`NAME` varchar(255) DEFAULT NULL,`DESCRIPTION` mediumtext,`EXTENDED_DESCRIPTION` mediumtext,`JOB_VERSION` varchar(255) DEFAULT NULL,`JOB_STATUS` int(11) DEFAULT NULL,`ID_DATABASE_LOG` int(11) DEFAULT NULL,`TABLE_NAME_LOG` varchar(255) DEFAULT NULL,`CREATED_USER` varchar(255) DEFAULT NULL,`CREATED_DATE` datetime DEFAULT NULL,`MODIFIED_USER` varchar(255) DEFAULT NULL,`MODIFIED_DATE` datetime DEFAULT NULL,`USE_BATCH_ID` char(1) DEFAULT NULL,`PASS_BATCH_ID` char(1) DEFAULT NULL,`USE_LOGFIELD` char(1) DEFAULT NULL,`SHARED_FILE` varchar(255) DEFAULT NULL,PRIMARY KEY (`ID_JOB`))2)r_jobentry:设计界面上的一个实体对应一个entry,通过job的id关联DROP TABLE IF EXISTS `r_jobentry`;CREATE TABLE `r_jobentry` (`ID_JOBENTRY` bigint(20) NOT NULL,`ID_JOB` int(11) DEFAULT NULL,`ID_JOBENTRY_TYPE` int(11) DEFAULT NULL,`NAME` varchar(255) DEFAULT NULL,`DESCRIPTION` mediumtext,PRIMARY KEY (`ID_JOBENTRY`))3)r_jobentry_attribute :job的详细信息表,包括job执行规则,执行过程中的参数来源,日志记录等DROP TABLE IF EXISTS `r_jobentry_attribute`;CREATE TABLE `r_jobentry_attribute` (`ID_JOBENTRY_ATTRIBUTE` bigint(20) NOT NULL,`ID_JOB` int(11) DEFAULT NULL,`ID_JOBENTRY` int(11) DEFAULT NULL,`NR` int(11) DEFAULT NULL,`CODE` varchar(255) DEFAULT NULL,`VALUE_NUM` double DEFAULT NULL,`VALUE_STR` mediumtext,PRIMARY KEY (`ID_JOBENTRY_ATTRIBUTE`))4)r_step:保存转换的步骤id,名字等r_step建表语句:DROP TABLE IF EXISTS `r_step`;CREATE TABLE `r_step` (`ID_STEP` bigint(20) NOT NULL,`ID_TRANSFORMATION` int(11) DEFAULT NULL,`NAME` varchar(255) DEFAULT NULL,`DESCRIPTION` mediumtext,`ID_STEP_TYPE` int(11) DEFAULT NULL,`DISTRIBUTE` char(1) DEFAULT NULL,`COPIES` int(11) DEFAULT NULL,`GUI_LOCATION_X` int(11) DEFAULT NULL,`GUI_LOCATION_Y` int(11) DEFAULT NULL,`GUI_DRAW` char(1) DEFAULT NULL,PRIMARY KEY (`ID_STEP`))5)r_step_attribute:转换步骤的详细信息,字段重命名,字段映射等。
通过外键id_transformation与r_step的id_transformation关联DROP TABLE IF EXISTS `r_step_attribute`;CREATE TABLE `r_step_attribute` (`ID_STEP_ATTRIBUTE` bigint(20) NOT NULL,`ID_TRANSFORMATION` int(11) DEFAULT NULL,`ID_STEP` int(11) DEFAULT NULL,`NR` int(11) DEFAULT NULL,`CODE` varchar(255) DEFAULT NULL, --操作编码譬如:truncate,也可以是字段映射等信息`VALUE_NUM` bigint(20) DEFAULT NULL, --操作值`VALUE_STR` mediumtext, --操作值,譬如truncate对应的是Y或者NPRIMARY KEY (`ID_STEP_ATTRIBUTE`),UNIQUE KEY `IDX_STEP_ATTRIBUTE_LOOKUP` (`ID_STEP`,`CODE`,`NR`))说明:如果有一个字段firtstname映射到name则在r_step_attribute中增加两条记录。
6.Kettle组成部分Chef:是一个图形用户界面,使用SWT开发,用来设计一个作业,转换,SQL,FTP,邮件,检查表存在,检查文件存在,执行SHELL脚本Kitchen:作业执行引擎,用来进行转换,校验,FTP上传。
可以执行xml格式定义的任务以及保存在数据库上的。
kitchen.bat /file:D:\Jobs\updateWarehouse.kjb /level:Basickitchen.sh -file=/PRD/updateWarehouse.kjb -level=Minimalkitchen.bat /rep:"Production Repository"/job:"Update dimensions"/dir:/Dimensions/user:matt/pass:somepassword123/level:Basickitchen.bat /file:F:\java\pdi-ce-3.2.0-stable\data-integration\samples\tr ansformations\files\demo-table2table.ktr /level:Basic/log:test123.logSpoon:Spoon 是Kettle的另一个图形用户界面,用来设计数据转换过程Pan:Pan是一个数据转换引擎,负责从不同的数据源读写和转换数据。