搜档网
当前位置:搜档网 › kettle 使用中的一些常见问题

kettle 使用中的一些常见问题

kettle 使用中的一些常见问题
kettle 使用中的一些常见问题

kettle 使用中的一些常见问题

问题1:

从excel 中抽取数据,插入到oracle 9 数据库中,报下面的错误.

2008/06/25 13:30:57 - 插入更新数据表.0 - Insert row: ![field1=1.3965E8, field2=1,798, field3=2002/05/27 00:00:00.000]

2008/06/25 13:30:57 - oracl - ERROR : java.sql.SQLException: ORA-01722: 无效数字2008/06/25 13:30:57 - oracl - ERROR : at

oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)

原因:

从错误信息可以看出,字段"field2" 对应的数据是1,798,该字段在数据库中是Number 类型,Oracle 不能将1,798 格式的字符串转换为数字。

解决方法:

在【Excel输入步骤】-【字段】标签下对应的字段设置为正确的类型。将"field2" 设置为"Number" 类型(默认是String 类型)。

问题2: 由sqlserver 向mysql 迁移数据, 迁移以后的数据是乱码

原因: 这是由于mysql 的默认编码是utf-8, 而中文环境下客户端的默认编码一般都是gbk 或gb18030, 由于客户端和服务器编码不一样导致保存到mysql 的数据是乱码

解决方法: 在新建连接窗口中有一个选项(option) 标签, 在这个标签下可以设置数据库的一些连接参数. 在这里我们要设置mysql 的客户端编码参数, 参数名characterEncoding, 参数值gbk.

问题3: 在SQLServer 表输入步骤中使用以问号作为参数的sql 语句(参数的值从以前的步骤中获得),向mysql 数据库导入数据(使用mysql 表输出步骤).

在执行的时候报告错误Unable to get queryfields for SQL: AND e.LOCAL_TIME>? 00909 PRS INC Invalid character.

原因: 从错误语句看,是参数没有被替换掉, 因为发送给mysql 服务器的是这样的语句"AND e.LOCAL_TIME>?". 参数没有被替换掉是因为从以前步骤中读取的参数值是null. 解决方法: 增加对null 值的判断, 可以有两种方法, 如果这个值是从数据库获取的,一般的数据库都提供了处理null值的函数,如mysql 的ISNULL 函数. 如果这个值是从其他步骤获得的,可以通过Javascript 步骤进行判断并转换.

问题4: 使用PDI 3.x 版本连接DB2 数据库时会报下面的错误

Error connecting to database: (using class com.ibm.db2.jcc.DB2Driver)

encoding not supported!!

原因: PDI 自带的DB2 JDBC Driver 的版本比较低,无法连接GBK 编码的DB2 数据库。解决方法: 将DB2 数据库的编码改为utf-8 编码。或者找高版本的DB2 JDBC Driver 来代替PDI 自带的DB2 JDBC Driver。

问题5: win2000 下运行,命令行太长导致spoon 或kitchen 无法运行:

原因: spoon 运行时加载了太多的jar,win2000 下对命令行的长度有限制

解决方法:1. 使用java.ext.dirs 参数,将lib,libext,等jar 路径都设置到这个参数下。https://www.sodocs.net/doc/406877478.html,/showthread.php?t=57843&page=2

2. 删除libext 目录下某些不需要的jar,如各种数据库的jdbc driver

3. 使用launcher 见

https://www.sodocs.net/doc/406877478.html,/browse/PDI-559

问题6: 关于资源文件kettle.property。

资源文件里的变量值如果有汉字,应该使用unicode 字符方式表示,即\uxxxx 的形式

变量值里如果有"\" 符号,要转义为"\\"

文本文件输入

从文本文件中获得数据,常见的文本文件包括csv 、txt、文件等。用户要在该步骤指定文件名、文件内容、错误处理方式、过滤器、字段等项目。

参数说明:

l 指定文件名的三种方式

1. 指定一个具体的文件名。

2. 指定一个正则表达式,来匹配一个目录下的文件。

3. 将其它步骤的运行结果作为文件名。

l 文件内容设置

分隔符:指定字段之间的分隔符号

文本限定符:指定一个字符串左右的限定符号,有限定符的字符串里可以使用分隔符。有限定符的字符串内部如果要使用限定符,要将限定符加倍。

转义符:指定文本中的转义符号,用来将其后的字符转义。

页眉:指定页眉的行数,页眉行不作为数据行处理。

页脚:指定页脚的行数,页脚行不作为数据行处理。

回卷:说明一个数据行是否被回卷为多行。

l 错误处理设置

忽略错误:是否忽略解析过程中产生的错误。

跳过错误行:是否跳过发生错误的行。如果不跳过,那么发生错误的字段值会被置为空。

记录错误数的输出字段:指定一个输出字段用来记录解析错误的字段的个数。

记录错误描述的输出字段:指定一个输出字段用来记录发生错误的所有字段的名字。

记录错误字段名的输出字段:指定一个输出字段用来记录错误的描述信息。

警告文件目录:当发生警告时,警告将保存在这个指定的目录下。

错误文件目录:当发生警告时,警告将保存在这个指定的目录下。

失败行数文件目录:当读取行失败时,读取失败的行号将保存在这个指定的目录下。

l 过滤器

过滤器:用来过滤输入行,符合过滤器条件的输入行将被忽略掉。

过滤字符串:用来去匹配输入数据的字符串(不支持正则表达式)

过滤开始位置:指定字符串里开始匹配的位置,负数或0表示从第一个字符开始匹配。

停止处理:当遇到了匹配的字符串时,是否停止处理

l 字段

设定字段名称和数据类型

使用kettle设计一些ETL任务时一些常见问题

2009-07-27 10:55

摘要:本文主要介绍使用kettle设计一些ETL任务时一些常见问题,这些问题大部分都不在官方FAQ上,你可以在kettle的论坛上找到一些问题的答案

1. Join

我得到A 数据流(不管是基于文件或数据库),A包含field1 , field2 , field3 字段,然后我还有一个B数据流,B包含field4 , field5 , field6 , 我现在想把它们‘加’ 起来, 应该怎么样做.

这是新手最容易犯错的一个地方,A数据流跟B数据流能够Join,肯定是它们包含join key ,join key 可以是一个字段也可以是多个字段。如果两个数据流没有join key ,那么它们就是在做笛卡尔积,一般很少会这样。比如你现在需要列出一个员工的姓名和他所在部门的姓名,如果这是在同一个数据库,大家都知道会在一个sql 里面加上where 限定条件,但是如果员工表和部门表在两个不同的数据流里面,尤其是数据源的来源是多个数据库的情况,我们一般是要使用Database Join 操作,然后用两个database table input 来表示输入流,一个输入是部门表的姓名,另一个是员工表的姓名,然后我们认为这两个表就可以”Join” 了,我们需要的输出的确是这两个字段,但是这两个字段的输出并不代表只需要这两个字段的输入,它们之间肯定是需要一个约束关系存在的。另外,无论是在做Join , Merge , Update , Delete 这些常规操作的时候,都是先需要做一个compare 操作的,这个compare 操作都是针对compare key 的,无论两个表结构是不是一样的,比如employee 表和department 表,它们比较的依据就是employee 的外键department_id , 没有这个compare key 这两个表是不可能连接的起来的.. 对于两个表可能还有人知道是直接sql 来做连接,如果是多个输入数据源,然后是三个表,有人就开始迷茫了,A表一个字段,B 表一个字段,C表一个字段,然后就连Join操作都没有,直接database table output , 然后开始报错,报完错就到处找高手问,他们的数据库原理老师已经

在吐血了。如果是三个表连接,一个sql 不能搞定,就需要先两个表两个表的连接,通过两次compare key 连接之后得到你的输出,记住,你的输出并不能代表你的输入. 下面总结一下:

1. 单数据源输入,直接用sql 做连接

2. 多数据源输入,(可能是文本或是两个以上源数据库),用database join 操作.

3. 三个表以上的多字段输出.

2. Kettle的数据库连接模式

Kettle的数据库连接是一个步骤里面控制一个单数据库连接,所以kettle的连接有数据库连接池,你可以在指定的数据库连接里面指定一开始连接池里面放多少个数据库连接,在创建数据库连接的时候就有Pooling 选项卡,里面可以指定最大连接数和初始连接数,这可以一定程度上提高速度.

3. transaction

我想在步骤A执行一个操作(更新或者插入),然后在经过若干个步骤之后,如果我发现某一个条件成立,我就提交所有的操作,如果失败,我就回滚,kettle 提供这种事务性的操作吗?

Kettle里面是没有所谓事务的概念的,每个步骤都是自己管理自己的连接的,在这个步骤开始的时候打开数据库连接,在结束的时候关闭数据库连接,一个步骤是肯定不会跨session的(数据库里面的session), 另外,由于kettle是并行执行的,所以不可能把一个数据库连接打开很长时间不放,这样可能会造成锁出现,虽然不一定是死锁,但是对性能还是影响太大了。ETL中的事务对性能影响也很大,所以不应该设计一种依赖与事务方式的ETL执行顺序,毕竟这不是OLTP,因为你可能一次需要提交的数据量是几百GB都有可能,任何一种数据库维持一个几百GB的回滚段性能都是会不大幅下降的.

4. 我真的需要transaction 但又不想要一个很复杂的设计,能不能提供一个简单一点的方式

Kettle 在3.0.2GA版中将推出一种新功能,在一个table output 步骤中有一个Miscellaneous 选项卡,其中有一个Use unique connections 的选项,如果你选中的话就可以得到一个transaction 的简单版,

由于是使用的单数据库连接,所以可以有错误的时候回滚事务,不过要提醒一点是这种方式是以牺牲非常大的性能为前提条件的,对于太大的数据量是不适合的(个人仍然不建议使用这种方式)

5. temporary 表如何使用

我要在ETL过程中创建一个中间表,当某个条件成立的时候,我要把中间表的数据进行转换,当另一条件成立的时候我要对中间表进行另一个操作,我想使用数据库的临时表来操作,应该用什么步骤。

首先从temp 表的生命周期来分,temp分为事务临时表和会话临时表,前面已经解释过了,kettle是没有所谓事务的概念的,所以自然也没有所谓的事务临时表。Kettle的每个步骤管理自己的数据库连接,连接一结束,kettle也就自然丢掉了这个连接的session 的handler , 没有办法可以在其他步骤拿回这个

session 的handler , 所以也就不能使用所谓的会话临时表,当你尝试再开一个连接的时候,你可以连上这个临时表,但是你想要的临时表里面的数据都已经是空的(数据不一定被清除了,但是你连不上了),所以不要设计一个需要使用临时表的转换

之所以会使用临时表,其实跟需要”事务” 特性有一点类似,都是希望在ETL 过程中提供一种缓冲。临时表很多时候都不是某一个源表的全部数据的镜像,很多时候临时表都是很小一部分结果集,可能经过了某种计算过程,你需要临时表无非是基于下面三个特性:

1. 表结构固定,用一个固定的表来接受一部分数据。

2. 每次连接的时候里面没有数据。你希望它接受数据,但是不保存,每次都好像执行了truncate table 操作一样

3. 不同的时候连接临时表用同一个名字,你不想使用多个连接的时候用类似与temp1 , temp2 , temp3 , temp4 这种名字,应为它们表结构一样。

既然临时表不能用,应该如何设计ETL过程呢?(可以用某种诡异的操作搞出临时表,不过不建议这样做罢了)

如果你的ETL过程比较的单线程性,也就是你清楚的知道同一时间只有一个这样的表需要,你可以创建一个普通的表,每次连接的时候都执行truncate 操作,不论是通过table output 的truncate table 选项,还是通过手工执行truncate table sql 语句(在execute sql script 步骤)都可以达到目的(基于上面的1,2 特性)

如果你的ETL操作比较的多线程性,同一时间可能需要多个表结构一样并且里面都是为空的表(基于上面1,2,3特性),你可以创建一个“字符串+序列” 的模式,每次需要的时候,就创建这样的表,用完之后就删除,因为你自己不一定知道你需要多少个这种类型的表,所以删除会比truncate 好一些。

下面举个例子怎么创建这种表:

你可以使用某种约定的表名比如department_temp 作为department 的临时表。或者

把argument 传到表名,使用 department_${argument} 的语法,

如果你需要多个这种表,使用一个sequence 操作+execute sql script 操作,execute sql script 就下面这种模式

Create table_? (…………..)

在表的名字上加参数,前面接受一个sequence 或类似的输入操作.

需要注意的是这种参数表名包括database table input 或者execute sql script ,只要是参数作为表名的情况前面的输入不能是从数据库来的,应为没有办法执行这种preparedStatement 语句,从数据库来的值后面的操作是“值操作” ,而不是字符串替换,只有argument 或者sequence 操作当作参数才是字符串替换. (这一点官方FAQ也有提到)

6. update table 和execute sql script 里面执行update 的区别

执行update table 操作是比较慢的,它会一条一条基于compare key 对比数据,然后决定是不是要执行update sql , 如果你知道你要怎么更新数据尽可能的使用execute sql script 操作,在里面手写update sql (注意源数据库和目标数据库在哪),这种多行执行方式(update sql)肯定比单行执行方式(update table 操作)快的多。

另一个区别是execute sql script 操作是可以接受参数的输入的。它前面可以是一个跟它完全不关的表一个sql :

select field1, field2 field3 from tableA

后面执行另一个表的更新操作:

update tableB set field4 = ? where field5=? And field6=?

然后选中execute sql script 的execute for each row .注意参数是一一对应的.(field4 对应field1 的值,

field5 对应field2 的值, field6 对应field3 的值)

7. kettle的性能

kettle本身的性能绝对是能够应对大型应用的,一般的基于平均行长150的一条记录,假设源数据库,目标数据库以及kettle都分别在几台机器上(最常见的桌面工作模式,双核,1G内存),速度大概都可以到5000 行每秒左右,如果把硬件提高一些,性能还可以提升 , 但是ETL 过程中难免遇到性能问题,下面一些通用的步骤也许能给你一些帮助.

尽量使用数据库连接池

尽量提高批处理的commit size

尽量使用缓存,缓存尽量大一些(主要是文本文件和数据流)

Kettle 是Java 做的,尽量用大一点的内存参数启动Kettle.

可以使用sql 来做的一些操作尽量用sql

Group , merge , stream lookup ,split field 这些操作都是比较慢的,想办法避免他们.,能用sql 就用sql

插入大量数据的时候尽量把索引删掉

尽量避免使用update , delete 操作,尤其是update , 如果可以把update 变成先delete , 后insert .

能使用truncate table 的时候,就不要使用delete all row 这种类似sql

合理的分区

如果删除操作是基于某一个分区的,就不要使用delete row 这种方式(不管是delete sql 还是delete 步骤),直接把分区drop 掉,再重新创建

尽量缩小输入的数据集的大小(增量更新也是为了这个目的)

尽量使用数据库原生的方式装载文本文件(Oracle 的sqlloader , mysql 的bulk loader 步骤)

尽量不要用kettle 的calculate 计算步骤,能用数据库本身的sql 就用sql ,不能用sql 就尽量想办法用procedure , 实在不行才是calculate 步骤.

要知道你的性能瓶颈在哪,可能有时候你使用了不恰当的方式,导致整个操作都变慢,观察kettle log 生成的方式来了解你的ETL操作最慢的地方。

远程数据库用文件+FTP 的方式来传数据,文件要压缩。(只要不是局域网都可以认为是远程连接)

8. 描述物理环境

源数据库的操作系统,硬件环境,是单数据源还是多数据源,数据库怎么分布的,做ETL的那台机器放在哪,操作系统和硬件环境是什么,目标数据仓库的数据库是什么,操作系统,硬件环境,数据库的字符集怎么选,数据传输方式是什么,开发环境,测试环境和实际的生产环境有什么区别,是不是需要一个中间数据库

(staging 数据库) ,源数据库的数据库版本号是多少,测试数据库的版本号是多少,真正的目标数据库的版本号是多少……. 这些信息也许很零散,但是都需要一份专门的文档来描述这些信息,无论是你遇到问题需要别人帮助的时候描述问题本身,还是发现测试环境跟目标数据库的版本号不一致,这份专门的文档都能提供一些基本的信息

9. procedure

为什么我不能触发procedure?

这个问题在官方FAQ里面也有提到,触发procedure 和 http client 都需要一个类似与触发器的条件,你可以使用generate row 步骤产生一个空的row ,然后把这条记录连上procedure 步骤,这样就会使这条没有记录的空行触发这个procedure (如果你打算使用无条件的单次触发) ,当然procedure 也可以象table input 里面的步骤那样传参数并且多次执行.

另外一个建议是不要使用复杂的procedure 来完成本该ETL任务完成的任务,比如创建表,填充数据,创建物化视图等等.

变量使用:

https://www.sodocs.net/doc/406877478.html,/topic/946152

Kettle开发使用手册范本

Kettle开发使用手册 2017年4月

版本历史说明

1.Kettle介绍 1.1.什么是Kettle Kettle是纯Java编写的、免费开源的ETL工具,主要用于抽取(Extraction)、转换(Transformation)、和装载(Loading)数据。Kettle中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。在这种思想的设计下,Kettle广泛用于不同数据库之间的数据抽取,例如Mysql数据库的数据传到Oracle,Oracle数据库的数据传到Greenplum数据库。1.2.Kettle的安装 Kettle工具是不需要安装的,直接网上下载解压就可以运行了。不过它依赖于Java,需要本地有JDK环境,如果是安装4.2或5.4版本,JDK需要1.5以上的版本,推荐1.6或1.7的JDK。 运行Kettle直接双击里面的批处理文件spoon.bat就行了,如图1.1所示: 图1.1

2.Kettle脚本开发 2.1.建立资源库(repository仓库) Repository仓库是用来存储所有kettle文件的文件系统,由于数据交换平台服务器管理kettle文件也是用Repository仓库,因此我们这边本地的kettle 开发环境也是要用到该资源库。建立资源库的方式是工具 --> 资源库- -> 连接资源库,这时候弹出一个窗口,我们点击右上角的“+”号,跟着点击下面的kettle file repository选项,按确定,如图2.1所示: 图2.1 跟着在右上角选择一个目录,建议在kettle路径下新建repository文件夹,再选择这个文件夹作为根目录,名称和描述可以任意写,如图2.2所示: 图2.2 建完后会kettle工具会自动连接到repository资源库,每次打开kettle 也会弹出一个窗口让你先连接到资源库。在连接到资源库的情况下打开文件就是

Kettle开发使用手册

Kettle开发使用手册2017年4月

版本历史说明

1.Kettle介绍 1.1.什么是Kettle Kettle是纯Java编写的、免费开源的ETL工具,主要用于抽取(Extraction)、转换(Transformation)、和装载(Loading)数据。Kettle中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。在这种思想的设计下,Kettle广泛用于不同数据库之间的数据抽取,例如Mysql数据库的数据传到Oracle,Oracle数据库的数据传到Greenplum数据库。1.2.Kettle的安装 Kettle工具是不需要安装的,直接网上下载解压就可以运行了。不过它依赖于Java,需要本地有JDK环境,如果是安装4.2或5.4版本,JDK需要1.5以上的版本,推荐1.6或1.7的JDK。 运行Kettle直接双击里面的批处理文件spoon.bat就行了,如图1.1所示: 图1.1

2.Kettle脚本开发 2.1.建立资源库(repository仓库) Repository仓库是用来存储所有kettle文件的文件系统,由于数据交换平台服务器管理kettle文件也是用Repository仓库,因此我们这边本地的kettle开发环境也是要用到该资源库。建立资源库的方式是工具 --> 资源库- -> 连接资源库,这时候弹出一个窗口,我们点击右上角的“+”号,跟着点击下面的kettle file repository选项,按确定,如图2.1所示: 图2.1 跟着在右上角选择一个目录,建议在kettle路径下新建repository文件夹,再选择这个文件夹作为根目录,名称和描述可以任意写,如图2.2所示: 图2.2 建完后会kettle工具会自动连接到repository资源库,每次打开kettle 也会弹出一个窗口让你先连接到资源库。在连接到资源库的情况下打开文件就是资源库所在目录了,如图2.3所示。注意你在资源库建的目录结构要跟数据交换平台的目录结构一致,这样写好kettle脚本,保存后放的路径能跟交换平台的目录结构一致了。

KETTLE组件介绍与使用

KETTLE组件介绍与使用 4.1 Kettle使用 Kettle提供了资源库的方式来整合所有的工作,; 1)创建一个新的transformation,点击保存到本地路径,例如保存到D:/etltest下,保存文件名为Trans,kettle默认transformation文件保存后后缀名为ktr; 2)创建一个新的job,点击保存到本地路径,例如保存到D:/etltest下,保存文件名为Job,kettle默认job文件保存后后缀名为kjb; 4.2 组件树介绍 4.2.1Transformation 的主对象树和核心对象分别如下图:

Transformation中的节点介绍如下: Main Tree:菜单列出的是一个transformation中基本的属性,可以通过各个节点来查看。DB连接:显示当前transformation中的数据库连接,每一个transformation的数据库连接都需要单独配置。 Steps:一个transformation中应用到的环节列表 Hops:一个transformation中应用到的节点连接列表 核心对象菜单列出的是transformation中可以调用的环节列表,可以通过鼠标拖动的方式对环节进行添加: Input:输入环节 Output:输出环节 Lookup:查询环节 Transform:转化环节 Joins:连接环节 Scripting:脚本环节 4.2.2 Job 的主对象树和核心对象分别如下图: Main Tree菜单列出的是一个Job中基本的属性,可以通过各个节点来查看。 DB连接:显示当前Job中的数据库连接,每一个Job的数据库连接都需要单独配置。 Job entries/作业项目:一个Job中引用的环节列表 核心对象菜单列出的是Job中可以调用的环节列表,可以通过鼠标拖动的方式对环节进行添加。 每一个环节可以通过鼠标拖动来将环节添加到主窗口中。 并可通过shift+鼠标拖动,实现环节之间的连接。

Kettle用户操作手册1

Kettle用户操作手册 1.kettle介绍 1.1 什么是kettle Kettle是“Kettle E.T.T.L. Envirnonment”只取首字母的缩写,这意味着它被设计用来帮助你实现你的ETTL 需要:抽取、转换、装入和加载数据;它的名字起源正如该项目的主程序员MATT所说:希望把各种数据放到一个壶里然后以一种指定的格式流出。 Spoon是一个图形用户界面,它允许你运行转换或者任务。 1.2 Kettle 的安装 要运行此工具你必须安装 Sun 公司的JAVA 运行环境1.4 或者更高版本,相关资源你可以到网络上搜索JDK 进行下载,Kettle 的下载可以到https://www.sodocs.net/doc/406877478.html,/取得最新版本。 1.3运行SPOON 下面是在不同的平台上运行Spoon 所支持的脚本: Spoon.bat: 在windows 平台运行Spoon。 Spoon.sh: 在Linux、Apple OSX、Solaris 平台运行Spoon。1.4 资源库 一个Kettle资源库可以包含那些转换信息,这意味着为了从数据库资源中加载一个转换就必须连接相应的资源库。在启动SPOON的时候,可以在资源库中定义一个数据库连接,利用启动spoon时弹出的资源库对话框来定义,如图所示:单击加号便可新增;

关于资源库的信息存储在文件“reposityries.xml”中,它位于你的缺省home 目录的隐藏目录“.kettle”中。如果是windows 系统,这个路径就是c:\Documents andSettings\\.kettle。 如果你不想每次在Spoon 启动的时候都显示这个对话框,你可以在“编辑/选项”菜单下面禁用它。admin 用户的缺省密码也是admin。如果你创建了资源库,你可以在“资源库/编辑用户”菜单下面修改缺省密码。 1.5 定义 1.5.1 转换 主要用来完成数据的转换处理。转换步骤,可以理解为将一个或者多个不同的数据源组装成一条数据流水线。然后最终输出到某一个地方,文件或者数据库等。 Step:转换步骤,数据流中的处理步骤,对数据进行处理 Hop:节点连接,一个Hop 代表两个步骤之间的一个或者多个数据流。一个Hop 总是代表着一个步骤的输出流和一个步骤的输入流。

kettle操作文档

Kettle操作文档 1.Kettle介绍。 (2) 2. Kettle下载。 (2) 3.使用规范和注意事项。 (3) 3.1.配置数据库的全局变量。 (3) 3.2.文件命名规范(不要用汉字)。 (3) 3.3.文件存放位置。 (3) 3.4.配置启动任务文件。 (3) 3.5.注意事项。 (4) 4. Kettle部署使用。 (4) 4.1.启动kettle。 (4) 4.2.创建转换文件。 (5) 4.2.1.使用标识字段实现新增数据。 (5) 4.2.2.使用时间戳实现新增或修改数据。 (11) 4.2.3.使用时间比较实现新增或修改数据。 (14) 4.2.4.使用对某一数据值比较实现新增或修改数据。 (17) 4.3.创建任务文件。 (19) 4.4.命令行启动任务。 (20)

1.Kettle介绍。 ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于政府部门来说,经常会遇到大数据量的处理,转换,迁移,所以了解并掌握一种etl工具的使用,必不可少。 Kettle是一款国外开源的etl工具,纯java编写,绿色无需安装,数据抽取高效稳定,提供了图形化界面,使用很方便。Kettle中有两种脚本文件,transformation和job,transformation 完成针对数据的基础转换,job则完成整个工作流的控制。 2.Kettle下载。 Kettle可以在http://2.2.2.240/bbs/网站下载kettle压缩包,因kettle为绿色软件,解压即可使用。这个压缩包,公司加了一些功能,跟官网下载的不太一样,建议使用公司论坛上的压缩包。 资料网站:https://www.sodocs.net/doc/406877478.html,/。 注:解压路径尽量不要有中文。 .kettle:存放kettle的一些环境变量信息,资源库的信息。 jre6:存放java运行库文件(1.6版本)。 launcher:存放启动的文件以及启动的配置信息。 lib:存放kettle的库文件。 libext:存放用到的外部库文件。 libswt:存放用到的界面库文件。 plugins:存放插件文件。 resources:存放编写的转换和任务文件,以及日志和任务 配置信息。 ui:存放用到的的图片和配置信息。 Kitchen.bat:任务文件执行器(命令行模式)。 Pan.bat:转换文件执行器(命令行模式)。 set-pentaho-env.bat:设置kettle运行的环境变量。 Spoon.bat:打开设计工具(界面方式)。 Spoon.ico,spoon.png:工具的图标。 start.bat:启动存放在resources目录下的任务配置文件。 说明.txt:使用的规范和注意事项。

pentaho-Kettle安装及使用说明(例子)

Kettle安装及使用说明 1.什么Kettle? Kettle是一个开源的ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程)项目,项目名很有意思,水壶。按项目负责人Matt的说法:把各种数据放到一个壶里,然后呢,以一种你希望的格式流出。Kettle包括三大块: Spoon——转换/工作(transform/job)设计工具(GUI方式) Kitchen——工作(job)执行器(命令行方式) Span——转换(trasform)执行器(命令行方式) Kettle是一款国外开源的etl工具,纯java编写,绿色无需安装,数据抽取高 效稳定。Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。 2.Kettle简单例子 2.1下载及安装Kettle 下载地址:https://www.sodocs.net/doc/406877478.html,/projects/pentaho/files 现在最新的版本是 3.6,为了统一版本,建议下载 3.2,即下载这个文件pdi-ce-3.2.0-stable.zip。 解压下载下来的文件,把它放在D:\下面。在D:\data-integration文件夹里,我们就可以看到Kettle的启动文件Kettle.exe或Spoon.bat。 2.2 启动Kettle 点击D:\data-integration\下面的Kettle.exe或Spoon.bat,过一会儿,就会出现Kettle的欢迎界面:

稍等几秒,就会出现Kettle的主界面: 2.3 创建transformation过程 a.配置数据环境 在做这个例子之前,我们需要先配置一下数据源,这个例子中,我们用到了三个数据库,分别是:Oracle、MySql、SQLServer,以及一个文本文件。而且都放置在不同的主机上。 Oralce:ip地址为192.168.1.103,Oracle的实例名为scgtoa,创建语句为:create table userInfo( id int primary key,

自己总结的Kettle使用方法和成果

KETTLE使用自己总结的Kettle使用方法和成果说明 简介 Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。 Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。 Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。 Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。 Kettle可以在https://www.sodocs.net/doc/406877478.html,/网站下载到。 注:ETL,是英文Extract-Transform-Load 的缩写,用来描述将数据从来源端经过萃取(extract)、转置(transform)、加载(load)至目的端的过程。ETL 一词较常用在数据仓库,但其对象并不限于数据仓库。 下载和安装 首先,需要下载开源免费的pdi-ce软件压缩包,当前最新版本为5.20.0。 下载网址:https://www.sodocs.net/doc/406877478.html,/projects/pentaho/files/Data%20Integration/然后,解压下载的软件压缩包:pdi-ce-5.2.0.0-209.zip,解压后会在当前目录下上传一个目录,名为data-integration。 由于Kettle是使用Java开发的,所以系统环境需要安装并且配置好JDK。 ?Kettle可以在https://www.sodocs.net/doc/406877478.html,/网站下载 ? 下载kettle压缩包,因kettle为绿色软件,解压缩到任意本地路径即可。运行Kettle 进入到Kettle目录,如果Kettle部署在windows环境下,双击运行spoon.bat 或Kettle.exe文件。Linux用户需要运行spoon.sh文件,进入到Shell提示行窗口,进入到解压目录中执行下面的命令: # chmod +x spoon.sh # nohup ./spoon.sh &后台运行脚本 这样就可以打开配置Kettle脚本的UI界面。

Kettle使用手册

Kettle培训手册 Etl介绍 ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于金融IT来说,经常会遇到大数据量的处理,转换,迁移,所以了解并掌握一种etl工具的使用,必不可少。 Kettle是一款国外开源的etl工具,纯java编写,绿色无需安装,数据抽取高效稳定。Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。 kettle部署运行 将kettle2.5.1文件夹拷贝到本地路径,例如D盘根目录。 双击运行kettle文件夹下的spoon.bat文件,出现kettle欢迎界面:

稍等几秒 选择没有资源库,打开kettle主界面

创建transformation,job 点击页面左上角的解并到本地路径,例如保存到D:/etltest下,保存文件名为EtltestTrans,kettle默认transformation 文件保存后后缀名为ktr 点击页面左上角的解并到本地路径,例如保存到D:/etltest下,保存文件名为EtltestJob,kettle默认job文件保存后后缀名为kjb 创建数据库连接

在transformation页面下,点击左边的【Main Tree】,双击【DB连接】,进行数据库连接配置。 Connection name自命名连接名称 Connection type选择需要连接的数据库 Method of access选择连接类型 Server host name写入数据库服务器的ip地址 Database name写入数据库名 Port number写入端口号 Username写入用户名 Password写入密码 例如如下配置:

ETL工具Kettle用户手册

技术资料,【Kette3.0 用户手册】
Kettle 3.0 用户手册
目录
Kettle 3.0 用户手册......................................................................................................................1
Kettle 3.0 用户手册......................................................................................................................6
1. Kettle 介绍................................................................................................................................6
1.1
什么是 kettle.............................................................................................................6
1.2
Kettle 的安装............................................................................................................6
1.3
运行 Spoon ...............................................................................................................6
1.4
资源库 ....................................................................................................................... 6
1.5
资源库自动登录 ....................................................................................................... 7
1.6
定义 ........................................................................................................................... 8
1.6.1 转换...................................................................................................................8
1.6.2 任务...................................................................................................................8
1.7
选项 ........................................................................................................................... 9
1.7.1 General 标签 ...................................................................................................10
1.7.2 Look Feel 标签 ...............................................................................................11
1.8
搜索元数据 ............................................................................................................. 12
1.9
设置环境变量 ......................................................................................................... 13
2. 创建一个转换或任务.............................................................................................................13
3. 数据库连接(Database Connections) ......................................................................................14
3.1
描述 ......................................................................................................................... 14
3.2
设置窗口 ................................................................................................................. 14
3.3
选项 ......................................................................................................................... 14
3.4
数据库用法 ............................................................................................................. 15
4. SQL 编辑器(SQL Editor) .......................................................................................................16
4.1
描述 ......................................................................................................................... 16
4.2
屏幕截图 ................................................................................................................. 16
4.3
局限性 ..................................................................................................................... 16
5. 数据库浏览器(Database Explorer) ........................................................................................17
5.1
屏幕截图 ................................................................................................................. 17
5.2
描述 ......................................................................................................................... 17
6. 节点连接(Hops) ................................................................................................................18
6.1
描述 ......................................................................................................................... 18
6.2
转换连接 ................................................................................................................. 18
6.3
任务连接 ................................................................................................................. 18
6.4
屏幕截图 ................................................................................................................. 18
6.5
创建一个连接 ......................................................................................................... 19
6.6
拆分一个连接 ......................................................................................................... 19
6.7
转换连接颜色 ......................................................................................................... 19
7. 变量(Variables)..................................................................................................................20
?深圳市神盾信息技术有限公司,2008
第 1 页/共 202 页

kettle文档

Kette 1 (2) 1.1 (2) 1.2 (3) 2 (3) 2.1 (3) 2.2) (4) 3 (5) 3. 1"Merge" (5) 3.2Sorted Merge (5) 3.3 (7) 3.4) (9) 4 (10) 4.1)split field to rows (10) 4.2) (11) 4.3 (12) 4.4 (12) 4.5 (13) 4.6) (14) 4.7 (14) 4.8 (15) 4.9) (16) 4.10) (17) 4.11)number range (18) 5flow (20) 5.1)switch/case (20)

5.2) (21) 6statistics (22) 6.1) (22) 7Uitlity (23) 7.1)If field value is null (23) 7.2)Null if... .. (25) 8 (26) 8.1)Check if a column exists (26) 8.2File exists (27) 8.3)Table exists (28) 8.4 (29) 8.5 (31) 8.6 (32) 9 (34) 9.1) Modified Java Script Value (34) 9.2)SQL (35) 9.3)Regex Evaluation (36) 1 11

"""1" """" "" 1.2 "" "sql" 2 2.1 "" """"

"""" 2.2) ""kettle "" "" "" "Specify datebase fileds" "Datebase fileds""enter filed mapping" add

kettle使用手册

1打开程序,点击spoon.bat 其实对于简单的数据库数据的抽取,基本只需要转换(.ktr格式)和作业(.kjb格式)这两种东西。下面就是建立一个转换的步骤: a 点击文件-->新建-->转换。 b 在左侧的树状列表中选“主对象树”,新建DB连接(参照第4点)。 c 在核心对象-->输入这个地方拖出一个表输入,在“输出”目录下拖出“表输出”,按住shift,从一个对象拖到另一个对象可进行连线。 2基本作业由开始,转换,成功3步骤组成。步骤之间使用shift+左键连线。 2.1‘1’代表无条件执行; 2.2‘2’代表上一步执行完成后,再执行下一步; 2.3‘3’代表不执行,左击连接线使其生效(绿色)或失效(灰色)。

3打开具体步骤中的转换流程,点击‘Transformation’跳转至相应具体转换流程, 编辑此转换具体路径,双击转换,弹出窗口,‘1’为相对路径,点击‘2’选择具体Visit.ktr 转换,为绝对路径。

4建立数据库连接,输入相应信息测试,成功即可 图4 5转换具体设置,如图4,‘表输出’至‘文本文件输出’流程跳接线为错误处理步骤,当输出格式不能满足表输出的目的表结构类型时,将会将记录输出到‘文本文件输出’

中的记录中。 5.1双击‘表输入’,输入相应的SSQL语句,选择配置数据库连接,或新增,预览查 询生成的结果(如果数据库配置中使用变量获取,此处预览生成错误)。 5.2双击‘表输出’,选择数据库连接,‘浏览’选择相应目标表,(此处‘使用批量 插入’勾选去除,目的是在错误处理步骤中无法使用批量处理,可能是插件兼容 问题) 6表输出插件定义 a) Target Schema:目标模式。要写数据的表的Schema的名称。允许表明中包含“。”对数据源来 说是很重要的 b) 目标表:要写数据的表名。

kettle公司内部培训手册.doc

Kettle 培训手册 一、Etl 介绍 ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于金融IT 来说,经常会遇到大数据量的处理,转换,迁移,所以了解并掌握一种etl工具的使用,必不可少。 Kettle是一款国外开源的etl工具,纯java编写,绿色无需安装,数据抽取高 效稳定。Kettle中有两种脚本文件,transformation和job,transformation完成针 对数据的基础转换,job则完成整个工作流的控制。 二、kettle 部署运行 将kettle2.5.1文件夹拷贝到本地路径,例如D 盘根目录。 双击运行kettle文件夹下的spoon.bat文件,出现kettle欢迎界面: 稍等几秒

选择没有资源库,打开kettle主界面 创建transformation,job

点击页面左上角的创建一个新的transformation,点击保存到本地路 径,例如保存到D:/etltest下,保存文件名为EtltestTrans,kettle默认transformation 文件保存后后缀名为ktr 点击页面左上角的创建一个新的job,点击保存到本地路径,例如保 存到D:/etltest下,保存文件名为EtltestJob,kettle默认job文件保存后后缀名为kjb 创建数据库连接 在transformation页面下,点击左边的【Main Tree】,双击【DB连接】,进行 数据库连接配置。 connection name自命名连接名称 Connection type选择需要连接的数据库 Method of access选择连接类型 Server host name写入数据库服务器的ip地址 Database name写入数据库名 Port number写入端口号 Username写入用户名 Password写入密码 例如如下配置:

kettle使用手册

1打开程序,点击 spoon.bat 其实对于简单的数据库数据的抽取,基本只需要转换(.ktr格式)和作业(.kjb格式)这两种东西。下面就是建立一个转换的步骤: a 点击文件-->新建-->转换。 b 在左侧的树状列表中选“主对象树”,新建DB连接(参照第4点)。 c 在核心对象-->输入这个地方拖出一个表输入,在“输出”目录下拖出“表输出”,按住shift,从一个对象拖到另一个对象可进行连线。 2基本作业由开始,转换,成功3步骤组成。步骤之间使用shift+左键连线。 2.1‘1’代表无条件执行; 2.2‘2’代表上一步执行完成后,再执行下一步; 2.3‘3’代表不执行,左击连接线使其生效(绿色)或失效(灰色)。

3打开具体步骤中的转换流程,点击‘Transformation’跳转至相应具体转换流程, 编辑此转换具体路径,双击转换,弹出窗口,‘1’为相对路径,点击‘2’选择具体Visit.ktr 转换,为绝对路径。

4建立数据库连接,输入相应信息测试,成功即可 图4 5转换具体设置,如图4,‘表输出’至‘文本文件输出’流程跳接线为错误处理步骤,当输出格式不能满足表输出的目的表结构类型时,将会将记录输出到‘文本文件输出’

中的记录中。 5.1双击‘表输入’,输入相应的SSQL语句,选择配置数据库连接,或新增,预览查询 生成的结果(如果数据库配置中使用变量获取,此处预览生成错误)。 5.2双击‘表输出’,选择数据库连接,‘浏览’选择相应目标表,(此处‘使用批量插 入’勾选去除,目的是在错误处理步骤中无法使用批量处理,可能是插件兼容问 题) 6表输出插件定义 a) Target Schema:目标模式。要写数据的表的Schema的名称。允许表明中包含“。”对数据源来 说是很重要的 b) 目标表:要写数据的表名。

java程序执行kettle的ktr(转换)文件

官网资料修改 java程序执行kettle的ktr(转换)文件 2009-11-16 20:03 /** * */ package com.hshz.xutil.kettle; import org.pentaho.di.core.exception.KettleException; import org.pentaho.di.core.util.EnvUtil; import org.pentaho.di.trans.StepLoader; import org.pentaho.di.trans.Trans; import org.pentaho.di.trans.TransMeta; /** * @author Administrator * */ public class KTRRun { /** * */ public KTRRun() { // TODO Auto-generated constructor stub } /** * @param args */ public boolean runTransformation(String filePathName) { try { StepLoader.init(); EnvUtil.environmentInit(); TransMeta transMeta = new TransMeta(filePathName); Trans trans = new Trans(transMeta); trans.execute(null); trans.waitUntilFinished(); if ( trans.getErrors() > 0 ) { throw new RuntimeException( "There were errors during transformation execution." ); } return true;

KETTLE详细设计

KETTLE详细设计说明书 V0.1 变更记录

1 Kettle界面介绍 双击Kettle.exe或者Spoon.bat打开Kettle图形界面化如下: (图1.1) Kettle中有两类设计分别是:Transformation(转换)与Job(作业),Transformation完成针对数据的基础转换,Job则完成整个工作流的控制。 Kettle常用三大家族:Spoon、Pan、Kitchen。 Spoon:通过图形界面方式设计、运行、调试Job与Transformation。 Pan:通过脚本命令方式来运行Transformation。 Kitchen:通过脚本命令方式来运行Job,一般就是通过调用Kitchen脚本来完成定时任务。 说明:当打开Kettle时显示的是Kettle的相关版本信息与GNU相关协议说明。

(图1.2) 说明:打开Kettle时弹出的窗口提示以资源库方式登录相关信息,关于乌江水电项目工程存储方式是以XML文件方式来进行存储,所以我就直接点击“没有资源库”。 图(1.3) 说明:进入Kettle设计界面。提示关于Spoon相关信息,这里直接点击“关闭”按钮。

(图1.4) 说明:图片中所使用到的字母位置标识说明。 (A):Kettle所使用到的菜单栏。 (B):在使用Kettle时所涉及使用到的对象。 (C):Kettle中所有的组件。 (D):根据选择(B)或者(C)显示相应的结果。 (E):Kettle设计界面。 (图1.5) 说明: 文件:是对Kettle所生成的Job与Trans进行相关的操作,如:新建、打开、保存、导入、

ETL利器KETTLE实战应用解析系列一 KETTLE使用介绍

ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种etl工具的使用,必不可少,这里我介绍一个我在工作中使用了3年左右的ETL工具Kettle,本着好东西不独享的想法,跟大家分享碰撞交流一下!在使用中我感觉这个工具真的很强大,支持图形化的GUI 设计界面,然后可以以工作流的形式流转,在做一些简单或复杂的数据抽取、质量检测、数据清洗、数据转换、数据过滤等方面有着比较稳定的表现,其中最主要的我们通过熟练的应用它,减少了非常多的研发工作量,提高了我们的工作效率,不过对于我这个.net研发者来说唯一的遗憾就是这个工具是Java编写的。 1、Kettle概念 Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。 Kettle中文名称叫水壶,该项目的主程序员MATT希望把各种数据放到一个壶里,然后以一种指定的格式流出。 Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。 Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。 2、下载和部署 Kettle可以在https://www.sodocs.net/doc/406877478.html,/网站下载 下载kettle压缩包,因kettle为绿色软件,解压缩到任意本地路径即可 3、Kettle环境配置(有Java环境的直接忽略此章节) 3、1安装java JDK 1)首先到官网上下载对应JDK包,JDK1.5或以上版本就行; 2)安装JDK; 3)配置环境变量,附配置方式:

相关主题