1.1 官网下载
下载完成后解压即可(若没有自带JDK,还需要安装JDK)。kettle中有两种脚本文件transformation(抓换)和job(作业),transformation针对数据的基础转换,生成.ktr文件,job择完成整个工作流的控制,生成.kjb文件。
1.2 开发环境(spoon)
Spoon.bat(window环境启动文件)
Spoon.sh(linux环境启动文件)
kitchen(命令行用于执行ETL作业)
Pan(命令行用于执行ETL转换)
1.3 数据库连接
打开转换或者作业,找到DB连接然后右键新建连接对应的数据库,测试连接成功即可。
连接名称(connection name):定义转换或者任务访问的连接的唯一名称;
连接类型(connection type):链接的数据类型;
连接方式(method of access):可以是native(JDBC),ODBC,或OCI;
主机名称(server host name):指定数据库部署的主机或者服务器的名称,也可指定IP地址;
数据库(database name):指定连接的数据库的名称,如果是ODBC方式就指定DNS名称;
端口号(port number):设定数据库监听的TCP/IP端口号;
用户名/密码(user name / password):指定连接数据库的用户名和密码。
1.4 资源库
一个kettle资源库可以包含那些转换信息,如果需要从数据库资源中加在一个转换,则必须连接相应的资源库。
要实现这些,需要在资源库中定义一个数据连接,可以在spoon启动的时候利用资源库对话框来定义,如果不想每次启动都会出现这个对话框,则可以在“编辑/选项中禁用”,也可以通过工具—资源库进行相关的配置。
也可以设置环境变量让spoon自动登录到资源库,需要配置的环境变量为:KETTLE_REPOSITORY KETTLE_USER KETTLE_PASSWORD
资源库存储信息文件“reposityries.xml”,linux位于系统登录用户缺省home目录的隐藏目录.kettle中,windows系统位于c:documents and settings \ .kettle中。
1.5 kettle执行顺序
作业:分串行执行和并行执行,串行执行是先执行完其中一条线再执行另一条线,并行是两条线同时执行,同一条线上的两个步骤会先执行前面的再执行后边的,每个步骤执行结果分为两种(true/false),根据返回结果控制流程的走向。
转换:一开始所有步骤同时运行,记录会从最前端往后传递,传递到相应步骤则该记录被该步骤做相应处理,处理完成再把记录往后传递,记录传递分复制和分发两种模式。
2.1 转换(transformation)
value:行的一部分,并且是包含以下类型的数据:字符型、浮点型、大整数、整数、日期、布尔型;
row:一行包含0个或者多个value;
output stream:输出流,离开一个步骤时行的堆栈;
input stream:输入流,进入一个步骤时的堆栈;
hop:一个hop代表两个步骤之间的一个或者多个数据流,一个hop总是代表着一个步骤的输出流和一个步骤的输入流;
note:一个转换的文本附加信息
2.2 任务(job)
job实体:一个job实体是一个任务的一部分,具体执行的内容;
hop:一个hop代表两个步骤之间的一个或者多个数据流,一个hop总代表两个job实体之间的连接,并且能够被原始的job entry设置,无条件执行下一个job entry,知道执行成功或者失败;
note:一个任务附加的文本注释信息。
2.3 节点连接(hops)
一个hop 连接两个步骤,数据流的方向使用箭头表示,连接可以使他可用或者禁用。
2.4 创建一个连接
可以使用下面的方法来创建连接:
☆使用鼠标中间按钮在图形界面上拖拉
☆使用鼠标左键和shift建在图形界面上拖拉
☆选择菜单树上的两个步骤,鼠标右键选择新连接
☆选择图形界面上的两个步骤,鼠标右键选择“新连接”
2.5 拆分一个连接
可以很简单的插入一个新步骤到两个连接中间,在图形界面上拖拉步骤通过一个连接,直到这个连接编程粗体。
转换连接的颜色含义
外观 | 含义 |
---|---|
green | 分发行 |
red | 复制行 |
yellow | 给步骤提供信息,分发行 |
magenta | 给步骤提供信息,复制行 |
gray | 不可用 |
black | 命名目标步骤 |
orange(dot line) | 一直没有使用的,因为没有数据经过 |
blue | 候选连接,使用鼠标中间按钮+拖拉 |
red(bold dot line) | 运输在源步骤出错的行 |
1.文本文件输入(text input)
可以通过此步骤读取大量的不同的文本文件。大多数是通过工具生成的csv文件。可以使用正则表达式匹配对应的文件。
内容指定
选项 | 描述 |
---|---|
FileType 文件类型 | 可以是CSV或者Fixed length(固定长度) 。根据指定的不同,在最后字段标签中按下“获取字段”按钮时,kettle将调用不同的帮助JUI |
Separator 分隔符 | 在文本的单行中,一个或者多个字符用来分隔字段,比较常用的是:或者一个tab制表符 |
Enclosure 封闭字符 | 一些字段能够被一对允许的分隔字符来封闭,封闭字符串是可选的。如果重复使用封闭文本’only nine o’ ’ clock news.’,用 ’ 作为封闭字符,将被解析成 only nine o’ clock news. |
Escape 逃逸字符 | 如果数据中有逃逸字符,就指定逃逸字符(或者逃逸字符串)。如果\作为逃逸字符,文本’only nine o’ clock news.’ 将被解析成only nine o’ clock news. |
Header / Number of header line(头部 / 头部行数量) | 如果文本文件有头部行就使用这个,可以指定头部行出现的次数 |
Footer / Number of Footer line(尾部 / 尾部行数量) | 如果文本文件有尾部行就使用这个,可以指定尾部行出现的次数 |
Wrapped Lines (包装行 / 包装行数量) | 利用这个来处理被某些页限制包装的数据行 |
Paged Layout(printout) (分页布局 / 每页行数 / 文档头部行) | 在行打印机上打印的时候,可以用这个选项作为最终的手段。用头部行的数量来调过介绍性文本,用每页的行数来定位数据行 |
Compression (压缩) | 如果文件时ZIP文件或者GZIP归档文件就使用这个 |
No empty rows (没有空行) | 不往下一步发送空行 |
Include filename in output (输出包含文件名) | 如果想文件名作为输出的一部分,可以启用这个 |
2.表输入(Table Input)
利用连接和SQL,从数据库中读取信息,自动生成基本的SQL语句。可以用 ? 接收相应的参数,参数值可以从前置步骤中获取,或者进行独特的设置。
3.获取系统信息(Get System Info)
可以从kettle环境中获取信息,可以获取一下信息:
选项 | 描述 |
---|---|
System date(variable) | 系统时间,每次访问的时候都在改变 |
System date(fixed) | 系统时间,由转换开始来决定 |
start date range(Transformation) | 根据ETL日志表的信息,确定日期范围的开始 |
end date range(Transformation) | 根据ETL日志表的信息,确定日期范围的结束 |
Start date range(job) | 根据ETL日志表的信息,确定日期范围的结束 |
end date range(job) | 根据ETL日志表的信息,确定日期范围的结束 |
Yesterday 00:00:00 | 昨天的开始 |
Yesterday 23:59:59 | 昨天的结束 |
First day of last month 00:00:00 | 上个月的开始 |
Last day of last month 23:59:59 | 上个月的结束 |
First day of this month 00:00:00 | 这个月的开始 |
Last day of this month 23:59:59 | 这个月的结束 |
Copy of step | 复制步骤 |
Transformation name | 转换的名称 |
Transformation file name | 转换的文件名(仅对XML) |
Transformation batch ID | 日志表中的批处理ID |
Hostname | 返回服务器的主机名 |
Command line argument1 | 命令行的第一个参数(1-10) |
kettle version | 返回kettle的版本 |
Kettle Build version | 返回kettle核心库的编译版本 |
Kettle Build Date | 返回kettle核心库的编译日期 |
☆步骤名称(step name):步骤的名称,在单个转换中必须唯一。
☆字段(fields):输出的字段。
4.生成行(Generate Rows)
输出一定数量的行,缺省为空,可选包括一定数量的静态字段。
☆step name(步骤名称):步骤的名称,在单个转换中必须唯一。
☆Limit:设置你要生成行的最大数量。
☆Fields:在输出行想要包含的静态字段。
5.文件反序列化(De-serialize from file)
从二进制kettle文件中读取数据行。这个步骤仅仅用来存储短期数据。
6.XBase输入(XBase input)
读取大多数被称为XBase family派生的DBF文件。
☆step name(步骤名称):步骤的名称,在单个转换中必须唯一。
☆The filename:用变量支持。
☆Limit size:读取行的数量,0表示不限制。
☆Add rownr:用包含行号的指定名称,添加一个字段到输出中。
7.Excel 输入(Excel Input)
从kettle支持的系统中读取excel文件。
☆step name(步骤名称):步骤的名称,在单个转换中必须唯一。
☆文件标签(File tab):
●支持变量的文件名
●输入的工作表。利用“获取工作表名称”按钮自动填充可用工作表,必须指定开始的行和列,以调整想读取的数据。
☆内容(Content tab):
●支持变量的文件名
●头部检查是否工作表指定了一个头部行。
●非空记录:检查是否不需要空行输出。
●停在空记录:当步骤在读取工作表遇到一个空行时停止读取。
●文件名称字段:步骤输出指定一个包含文件名称的字段。
●工作表名称字段:步骤输出指定一个包含工作表名称的字段。
●sheet row nr field:步骤输出一个指定包含工作表行数的字段。工作表行数是时间的EXCEL工作表的行数。
●row nr written field:步骤输出指定一个包含行数的字段。
●限制:限制输出的行数,0代表输出所有行。
☆字段(Fields tab):
●指定可以想从excel中读取的字段。如果工作表有一个头部行,按钮“获取来自头部的字段”将自动获取并填充可用的字段。
8.XML输入(Get date from XML)
读取存储在XML文件中的数据。他也提供一个接口,可以定义想读取的文件名、XML文件的数据重复部分,获取的字段等,可以指定元素或属性字段。
9.获取文件名(Get File Names)
获取系统的文件名信息。输出的字段是:
☆文件名:包含路径的完整文件名称(如:/temp/trst/test.txt)。
☆短文件名:仅仅是文件名,不包含路径。
☆路径:只包含路径。
10.文本文件输出(Text file output)
选项 | 描述 |
---|---|
步骤名称 | 步骤名称,在单个转换中必须唯一 |
文件名称 | 指定输出文本文件的文件名和路径 |
run this as a commend instead? | 根据指定把结果输出到命令行或者脚本 |
扩展名 | 在文件的最后端添加一个扩展名(.tet / .xls等) |
文件名里包含步骤数 | 如果在多个拷贝中运行步骤,拷贝的数量将包含到文件名中(在扩展名之前) |
文件名包含日期 | 文件名中包含系统日期(_20191212) |
文件名包含系统时间 | 文件名包含系统时间 |
追加 | 是否在指定文件末尾追加行 |
分隔符 | 指定在文本中分隔字段的字符,如; |
封闭符 | 封闭字段的一对字符,可选 |
头部 | 如果想要一个头部行,使这个字段可用 |
尾部 | 如果想要一个头部行,使这个字段可用 |
格式 | DOS或者UNIX。UNIX文件分隔符是换行符,DOS文件可以是换行符或者回车符 |
编码 | 指定文件使用的编码,如果空白就使用系统缺省编码 |
压缩 | 指定压缩的类型(zip或者gzip) |
right pad fields | 在字段最后添加空格或者删除字符,直到长度达到指定 |
fast data dump(no formatting) | 当处理大量数据到一个文本文件时,提高性能(不包含任何格式化信息) |
分拆▪▪▪每一行(split every ▪▪▪ rows) | N大于0,用N行拆分文本文件,分割成多个部分 |
add ending line of file | 指定输出文本的结束行 |
字段 | ●名称:字段的名称 ●类型:字段类型可以是string、date、number等 ●格式 ●长度: number:有效数的长度 string:字符串的长度 Date:打印输出字符的长度 ●精度 ●货币:代表当前货币的符号 ●十进制:分组符可以是“,”或者“.” ●分组:分组符可以是“,”或者“.” ●null:如果这个字段值为空,插入这个字符到文本文件 |
显示文件名 | 展示生成的文件列表 |
11.表输出(table output)
这个步骤可以存储信息到数据库表中。
选项 | 描述 |
---|---|
步骤名称 | 在单个转换中必须唯一 |
连接 | 用来写数据的数据库连接 |
target schema | 要写数据的表的schema名称 |
目标表 | 要写数据的表名 |
提交记录数量 | 在数据表中用事物插于行。设置N>0每N行提交一次 |
裁剪表 | 在第一行数据插入之前裁剪表 |
忽略插入错误 | 使kettle忽略像违反主键约束之类的插入错误,在批量插入的时候这个功能不可用 |
使用批量插入 | 默认被选上,使用这个速度最快 |
表分区数据 | 可以在多个表之间拆分数据,如把数据放到表table1,table2,table3中代替直接插入数据到sales表中 |
表名定义在一个字段里 | 使用这个可以拆分数据到一个或者多个表里,目标表名可以使用指定的字段来定义 |
返回一个自动产生的关键字 | 往表中插入行时,是否产生一个关键字 |
自动产生关键字的字段名称 | 指定包含关键字的输出字段的字段名称 |
SQL(功能 / 按钮) | 生成自动创建输出表的SQL脚本 |
check(功能 / 按钮) | 验证目标表中的所有字段是否可用 |
12.插入/更新(Insert/Update)
这个步骤利用查询关键字在表中搜索行。如果行没有找到就插入行,找到后判断被更新的字段,有变化则更新,否则什么都不做。
☆步骤名称:步骤的名称,在单个转换中必须唯一。
☆连接:目标表所在数据库连接名称。
☆target schema:要写数据的表的schema名称。允许表名中包含“.”很重要。
☆目标表:想插入或更新的表的名称。
☆comment size:提交之前要改变(插入/更新)的行数。
☆不执行任何更行:如果被选择,数据库的值永远不会被更新,仅仅可以插入。
☆更新字段:指定想要插入/更新的字段。
☆“获取字段”按钮:从输入流中获取字段,并且填充到关键字中。
☆“获取更新字段”按钮:从输入流中获取更新字段,并且填充到更新列表中。
☆“check”按钮:检查目标表中是否所有的字段都可用。
☆“SQL”按钮:为正确操作,生成创建表和索引的SQL脚本。
13.更新(update)
和插入/更新一样,只是仅仅只执行更新操作。
14.删除(delete)
删除匹配字段的数据。
15.序列化到文件(serialize to file)
这一步骤存储数据到一个二进制文件。优势在于回读的时候,文本文件的内容不需要解析。
16.XML输出(XML output)
设置和文本文件输出相似,但扩展名变为.xml。
17.excel输出(excel output)
利用这个步骤,可以写入数据到一个或者多个excel文件中。
☆File标签
●文件名和扩展名,可以用变量
●扩展名用于输出文件
●选项“include the stepnr in the filename”(允许文件并行创建)
●选项“include date/time in the filename”(允许文件名中包含系统时间或日期)
●按钮“show filenames”展现步骤运行后,创建的文件的集合
☆Content标签
●header检查表单是否有头部
●footer检查表单是否有尾部
●encoding指定电子表单使用的编码
●split ever …rows分割数据到几个输出文件中
●use template输出的EXCEL数据是否使用模板
●excel template格式化EXCEL输出模板的名称
●append to excel template是否将EXCEL输出添加到指定的EXCEL模板中
☆fields标签
●可以指定想输出到excel文件中的字段,如果电子表单的头部按钮“获取字段”将自动获取可以使用的字段
●可以指定excel使用的格式
18.数据库查询(Database lookup)
这个步骤允许从数据库表中查找值。
●步骤名称:单一转换中步骤名称必须唯一
●数据库连接:想要写入数据的链接
●查询表:想要查询的表名
●使用缓存:数据库查询是否使用缓存。这意味着同样的查询语句在某种查询条件下,每次都能返回同样的结果
19.流查询(stream lookup)
这个步骤允许从其他步骤中查询信息。首先,“源步骤”的数据被读取到内存中,然后被用来从主要的流中查询数据。
●步骤名称:单一转换中步骤名称必须唯一
●源步骤:数据来源的步骤名称
●查询值所需要的关键字:允许指定用来查询值的字段名称。值总是用“等于”比较符来搜索。
●接收的字段:可以指定用来接收字段的名称,或者是在值没有找到的情况下的缺省值,或者不适用旧的字段名称的情况下的新字段的名称
●preserve memory:排序的时候对数据进行编码以保护内存
●key and value are exactly one integer field:排序的时候对数据进行编码以保护内存
●use sorted list:是否用一个排序列表来存储值,它提供更好地内存使用。
●“获取字段”按钮:自动获取元字段的名称,可以删除不想查询的字段。
●“获取查找字段”按钮:自动获取输出流中可用字段名称,可以删除不想返回的字段。
20.调用数据库存储过程(Call DB Procedure)
这个过程允许运行一个数据库存储过程,并返回结果。
●步骤名称:单一转换中步骤名称必须唯一
●连接:存储过程所有的数据库的连接名称
●存储过程名称:调用的存储过程或者函数名称
●自动提交:在运行存储过程的时候自动提交
●结果名称:调用存储过程或者函数
●结果类型:调用存储过程或者函数返回结果的类型
●参数:存储过程或者函数需要的参数列表(名称:字段的名称;方向:可以是IN,OUT,INOUT;类型:使用输出参数,以便kettle知道返回了什么)
21.字段选择(select values)
该步骤常常用来:选择字段;重命名字段;指定字段的长度或者精度。
22.过滤行(filter rows)
根据条件和比较符来过滤记录。
●发送“true”数据给步骤:指定条件返回true的数据将发送到此步骤。
●发送“false”数据给步骤:指定条件返回false的数据将发送到此步骤。
23.行排序(sort rows)
利用指定的字段排序行,无论是降序还是升序。
●排序目录:临时文件存储的目录。如果缺省则为标准的系统临时文件。
●排序尺寸:存储在内存中的行越多,排序的速度就越快。
●临时文件前缀:选择一个好记的前缀,以便在临时目录中容易找到。
●压缩临时文件:当需要完成排序的时候,这个选项将压缩临时文件。
24.添加序列(add sequence)
这个步骤在流中增加一个序列。一个序列是在某个起始值和增量的基础上,经常改变的整数值。可以使用数据库的序列,也可以使用kettle计算的序列。
●值的名称:新序列值的名称,将被添加到流中。
●使用数据库获取序列:
●连接名称:选择数据库序列所在的连接名称。
●序列名称:数据库序列的名称。
●使用计数器来计算序列:使用kettle生成序列时可用。
●计数器名称(可选):如果一个转换中多个步骤生成同样的值名称,这个选项允许指定计数器的名称,避免按照先后顺序通过多个步骤。
●起始值:序列的起点。
●增量:序列的增量。
●最大值:序列的最大值,若超过,将重新开始。
25.空操作(dummy-do nothing)
这个操作什么都不做,主要作用是在测试的时候充当一个占位符。如一个转换,至少需要两个彼此连接的步骤。如果想测试文本文件输入步骤,可以将他连接到一个dummy。
26.行转列(row normaliser)
这个步骤实现行列转换。
●字段类型:字段类型的名称。
●字段:标准化的字段列表:
●字段名称:标准化的字段名称
●类型:用字符串分类字段
●新字段:可以指定一个或者多个新值将要转入的字段,可以一次转换多个字段。
27.拆分字段(split fields)
根据分隔符来拆分字段。
●需要拆分的字段:想要拆分的字段的名称
●分隔符:决定字段结束的分隔符
●字段:拆分形成的字段列表
28.去除重复记录(unique rows)
从输入流中移除重复的记录。
●增加计数器到输出:如果想知道多少重复行被去掉,就选择此选项。
●计数器字段:包含行号的字段的名称。
●字段名:用来比较的字段的字段名称。
29.分组(group by)
这个步骤通过定义分组的字段来计算值,如计算产品的平均销售额。
●分组字段:指定分组的字段。
●聚合:指定需要聚合的字段、方法以及新字段的名称。
●包含所有的行:如果选择这个,输出中就包含所有的行,不仅仅是聚合。
●临时文件目录:临时文件存储的目录。
●临时文件前缀:指定命令临时文件时的文件前缀。
●添加行号,每一个分组重启:如果添加行号就选择这个。
●字段名行数:指定行号将插入的字段的名称。
30.设置为空值(null if)
如果某个字符串的值等于指定的值,设置那个值为空。
31.计算器(calculator)
这个步骤提供一个功能列表,可以在字段值上运行。计算器的一个重要优势是,它有着几倍于常用的JS脚本的速度。
32.增加常量(add constants)
这个步骤主要是添加常量到流中。用字符串形式指定名称,类型和值,利用选择的数据类型指定转换格式。
33.行转列(row denormaliser)
这个步骤允许通过查询剑指对来反向规格化数据,也可以立即转换数据类型。
●关键字段:指定关键字段
●分组字段:指定构成分组的字段
●目标字段:指定反向规格化的字段
34.行扁平化(flattener)
fld1 | fld2 | fld3 | test |
---|---|---|---|
A | B | C | ONE |
A | B | C | TWO |
D | E | F | THREE |
D | E | F | FOUR |
扁平化处理后:
fld1 | fld2 | fld3 | test1 | test2 |
---|---|---|---|---|
A | B | C | ONE | TWO |
D | E | F | THREE | FOUR |
以上扁平化设置:
●需要扁平化的字段:test
●目标字段:test1 test2
35.值映射(value mapper)
这个步骤简单的映射字符串,从一个值映射到另一个值。通常解决存储一个数据库中转换表的问题,简单的将转换表作为值映射对话框的一部分。
eg:替换language codes:
●使用的字段名:LanguageCode
●目标字段名:LanguageDesc
●源值/目标值:EN/english
36.被冻结的步骤(blocking step)
冻结所有的输出,直到从上已步骤来的最后一行数据到达,最后一行数据将发送到下一步。可以使用这个步骤触发常用插件、存储过程和JS。
37.记录关联(笛卡尔输出)-Join Rows(cartesian product)
这个步骤允许组合输入流中的所有行。
●临时目录:如果想更多地行,指定系统存储临时文件
●临时文件前缀:生成的临时文件的前缀
●最大缓存大小:系统从临时文件读取数据缓存的大小
●读取的主要步骤:指定读取最多数据的步骤名称
●条件:可以指定复杂的条件来限制输出行数
38.合并记录(merge rows)
这个步骤允许比较两个行流。如果两个不同的时间比较数据,这是非常有用的。常被用于数据仓库源系统没有包含最后更新日期的情况。两个行流被合并,一个是引用流(旧数据),一个是比较流(新数据)。每次都是行的最后版本通过进入下一步骤。行有一下标记:
●“identical”:关键字在两个流中都存在,并且值相同
●“changed”:关键字在两个流中都存在,但是一个或者更多的值不同
●“new”:引用流中没有找到关键字
●“deleted”:比较流中没有找到关键字,比较流中的数据进入下一步骤,除非在删除的情况。
39.存储合并(stored merge)
合并来自多个输入步骤的数据行,并且这些行用指定的关键字排序。
40.合并连接(merge join)
来自两个不同步骤输入的数据执行一个高效的合并。合并选项包括INNER,LEFT OUTER,RIGHT OUTER,FULL OUTER。
●第一个步骤:指定要合并的第一个输入步骤
●第二个步骤:指定要合并的第二个输入步骤
●连接类型:选择合并可用的类型
●关键字段:指定要存储数据的关键字段
●获取字段tuttons:获取输入的第一个步骤和第二个步骤的字段列表
41.Java Script
这个步骤允许使用JS做复杂运算。
42.执行SQL语句(execute SQL script)
这个步骤可以执行SQL脚本,或者在转换初始化的时候执行,或者在步骤的每一个输入行执行。可以在SQL脚本中使用参数。对于全局变量或运行参数,用%%v_name%%或者${v_name}进行替换,使用 ?作为占位符,变量必须来自前一步骤。
43.从结果获取记录(get rows from result)
这个步骤返回在一个任务中先前步骤生成的行。可以进入选择先前步骤生成的元数据字段。
44.至记录到结果(copy rows to result)
在一个任务中将行数据(内存中的)传递到下一个步骤。
45.置变量(set variable)
这个步骤允许在一个任务中或者虚拟机中设置变量。它仅仅可以用一行数据来设置变量值。
●valid in the virtual machine:整个虚拟机将知道那个变量,仅仅可以在单机模式下运行。
●valid in the parent job:变量仅仅在父任务中合法。
●valid in the grand-parent job:变量仅仅在祖父任务中合法。
●valid in the root job:变量仅仅在根任务中合法。
46.聚合行(aggregate rows)
这个步骤允许在所有行的基础上快速的聚集行。下面是可用的聚集类型:
SUM:字段的和
AVERAGE:字段的平均数
COUNT:非空值的数量
MIN:字段的最小值
MAX:字段的最大值
FIRST:字段的第一个值
LAST:字段的最后一个值
47.中止(Abort)
这个步骤允许在观察输入的时候中止步骤。它的主要用途是错误处理,在一定数量的行流过错误的连接时中止转换。
●中止开始:中止转换的开始行数。如果设置为0,在第一行的时候,步骤将被中止,如果设置为5,将在第6行中止。
●中止消息:中止的时候放入日志文件的消息,如果没有输入就使用缺省消息。
●总是记录行数:中止步骤总是记录处理的行数。
48.ORACLE批量装载(Oracle bulk loader)
这个步骤允许大批量加载数据到ORACLE数据库,他将用一个正确的装载格式,然后调用oracle的sqlloader数据加载工具加载到指定表中。
●连接:维表所在数据库的连接。
●目标schema:要写入数据库表的schema名称,表名中可以包含“,”。
●Sqlldr path:SQLloader数据加载工具的全路径。
●装载方式:“自动加载”或者“手动加载”。如果是“自动加载”,步骤将在用指定的参数收到所有的输入后运行Sqlldr工具。如果是“手动加载”,将生成一个可以作为后门使用的控制和数据文件。
●加载动作:append、insert、replace、truncate。这些会映射到sqlddr的动作来执行。
●错误的最大行数:发生错误的行数,这时sqlldr将被中断。与sqlldr的“ERROR”属性来通信。
●提交:提交的行数,与sqlldr的“ROWS”属性通信。
●绑定大小:与sqlldr的“BINDSIZE”属性通信。
●读取大小:与sqlldr的“READSIZE”属性通信。
●控制文件:sqlldr控制文件的名称。
●数据文件:数据将被写入的数据文件的名称。
●日志文件:日志文件的名称,可选。
●坏文件:坏文件的名称,可选。
●废文件:废文件的名称,可选。
●编码:数据指定的编码格式,可以从下拉列表框中选择。
●直接路径:直接路径加载的开关,与sqlldr的“DIRECT=TRUE”通信。
●使用后删除cfg/dat文件:加载后是否删除控制文件盒数据文件。
●表字段:ORACLE表中加载的表字段。
●流字段:输入行中带来的字段。
选项 | 描述 |
---|---|
job name | 任务名称,如果你需要保存到资源库这是必须的 |
directory | 想保存到资源库的目录 |
log connection | 用这个连接写到日志表 |
log table | 指定日志表的名称 |
user batch-ID | 在日志表中使用批处理ID |
pass the batch-ID to job entries | 检查炸任务中是否通过生成的唯一批处理ID访问转换或者任务条目 |
use logfield to store logging in | 检查是否在日志表用长文本字段(CLOB)来存储任务的日志 |
SQL button | 生成需要创建日志表的SQL脚本,并且允许你执行它 |
1.启动
START 是任务执行的入口,首先必须是任务可以执行。只有无条件的任务条目可以从START入口连接。START图标也包含基本进度安排功能。
2.Dummy
在一个任务中使用Dummy条目将什么也不做,这可以使一个任务更清晰的展示,或者在执行循环中使用。
3.SUCCESS
如果任务的上一个条目错误数量为0则返回true.
4.转换(transformation)
可以用一个转换任务条目执行一个先前定义的转换。
选项 | 描述 |
---|---|
name of job entry | 任务条目的名称,在单个任务中必须唯一 |
name of transformation | 需要运行的转换的名称 |
repository directory | 指定资源库目录 |
filename | 如果你不是使用资源库工作,就指定转换运行的XML文件 |
specify log file | 检查是否为转换指定一个单独的日志文件 |
name of log file | 日志文件的目录和名称 |
extension of the log file | 文件名扩展 |
include date in filename | 文件名中添加系统日期 |
include time in filename | 文件名中添加系统时间 |
logging level | 日志级别 |
copy previous results to arguments | 上一次的转换结果复制到参数中 |
arguments | 指定转换的参数 |
execute once for every input row | 支持循环,允许转换在每一个输入行上执行一次 |
clear the list or result files before executiion | 在转换运行之前,检查确保列表或结果行已经被清除 |
5.任务(job)
可以使用job条目来运行一个先前定义的任务。
选项 | 描述 |
---|---|
name of job entry | 任务条目的名称,在单个任务中必须唯一 |
name of transformation | 需要运行的转换的名称 |
repository directory | 指定资源库目录 |
filename | 如果你不是使用资源库工作,就指定转换运行的XML文件 |
specify log file | 检查是否为转换指定一个单独的日志文件 |
name of log file | 日志文件的目录和名称 |
extension of the log file | 文件名扩展 |
include date in filename | 文件名中添加系统日期 |
include time in filename | 文件名中添加系统时间 |
logging level | 日志级别 |
copy previous results to arguments | 上一次的转换结果复制到参数中 |
arguments | 指定转换的参数 |
execute once for every input row | 支持循环,允许转换在每一个输入行上执行一次 |
6.shell
可以使用shell任务条目在任务运行的主机上执行一段shell脚本。shell脚本能在控制台窗口输出文本,输出将转换到kettle日志系统,这不会影响shell脚本运行。
选项 | 描述 |
---|---|
name of job entry | 任务条目的名称,在单个任务中必须唯一 |
name of transformation | 需要运行的转换的名称 |
repository directory | 指定资源库目录 |
filename | 如果你不是使用资源库工作,就指定转换运行的XML文件 |
specify log file | 检查是否为转换指定一个单独的日志文件 |
name of log file | 日志文件的目录和名称 |
extension of the log file | 文件名扩展 |
include date in filename | 文件名中添加系统日期 |
include time in filename | 文件名中添加系统时间 |
logging level | 日志级别 |
copy previous results to arguments | 上一次的转换结果复制到参数中 |
arguments | 指定转换的参数 |
execute once for every input row | 支持循环,允许转换在每一个输入行上执行一次 |
7.mail
可以使用mail任务条目来发送电子邮件。
选项 | 描述 |
---|---|
name of job entry | 任务条目的名称,在单个任务中,必须唯一 |
destination address | e-mail 目的地 |
use authentication | 检查SMTP服务器是否需要身份认证 |
authentication user | 身份认证用户名 |
authentication password | 身份认证用户密码 |
SMTP server | 邮件发送的邮件服务器 |
reply address | e-mail的回复地址 |
subject | e-mail的主题 |
include date in message | 是否需要在e-mail中包含日期 |
contact person | e-mail联系人姓名 |
contact phone | e-mail联系人电话 |
comment | e-mail附加备注信息 |
attach file to message | 检查消息是否有附加文件 |
select the result files types to attach | 指定想附加的文件类型 |
zip files into a single archive | 检查是否需要压缩所有选择的文件到档案文件中 |
8.SQL
可以使用SQL任务条目执行SQL脚本,多行脚本之前用“;”隔开。
选项 | 描述 |
---|---|
name of job entry | 任务条目的名称,在单个任务中,必须唯一 |
connection | 所用的数据库连接 |
use variable substitution | 在SQL脚本中使用kettle变量 |
SQL script | 要执行的SQL脚本 |
9.FTP(get a file with FTP)
可以使用FTP任务条目从FTP服务器上获取一个或者多个文件。
选项 | 描述 |
---|---|
job entry name | 任务条目的名称,在单个任务中,必须唯一 |
FTP server name | 服务器名称或者IP地址 |
user name | 登陆FTP服务器的用户名 |
password | 登陆FTP服务器的密码 |
remote directory | 从FTP服务器获取文件的远程目录 |
target directory | 存放传送文件的目录(运行kettle的机器) |
wildcard | 如果想要选择多个文件,指定一个正则表达式 |
use binary mode | 如果文件需要使用二进制模式 |
TimeOut | FTP服务器超时时间 |
remove files after retrieval | 在FTP服务器所有文件被成功转移后,删除FTP服务器的文件 |
don’ t overwrite files | 如果指定目标目录文件已经存在则调过文件 |
use active FTP connection | 使用主动模式FTP,以代替被动模式(默认) |
control encoding | FTP控制指令的编码 |
10.table exists
可以使用TABLE EXISTS任务条目检验数据库中是否存在某个表。
选项 | 描述 |
---|---|
name of job entry | 任务条目的名称,单个任务中必须唯一 |
database connection | 所用的数据库连接 |
tablename | 要检查的数据库表名 |
11.create a file
可以使用该任务条目创建一个空文件,这对在任务中创建“触发器”是有用的。
选项 | 描述 |
---|---|
job entry name | 任务条目的名称,单个任务中必须唯一 |
file name | 创建的空文件的文件名称和路径 |
fail if file exists | 当文件已经存在时,这个工作条目将跟随一个失败节点,默认选中 |
12.delete a file
可以使用该条目来删除一个文件。
选项 | 描述 |
---|---|
job entry name | 任务条目的名称,单个任务中必须唯一 |
file name | 要删除的文件名称和路径 |
fail if file exists | 当文件已经存在时,这个工作条目将跟随一个失败节点,默认选中 |
13.wait a file
可以使用该任务条目来等待一个文件。这个任务条目将定期的检车指定的文是否存在,以决定流程是否继续。这个条目可以不确定的等待文件或者经过一段时间后超时。
选项 | 描述 |
---|---|
job entry name | 任务条目的名称,单个任务中必须唯一 |
file name | 要等待的文件的文件名称和路径 |
maximum timeout | 最大超时时间秒数,0表示不确定。如果到了设定的时间,就算文件还没有被创建,流程也将继续。一旦超时,“success on timeout”选项将决定下一个成功或者失败的节点继续与否 |
check cycle time | 设置检查文件的时间间隔 |
success on timeout | 一旦超时,如果文件还没有觉察到,下一结点将继续 |
file size check | 探测指定的文件,仅仅当最后一次检查时文件尺寸没有改变才继续 |
14.file compare
可以使用该任务条目来比较两个文件的内容,控制任务的流程。当两个文件相等时,成功流出节点将继续,否则失败节点将继续。
选项 | 描述 |
---|---|
job entry name | 任务条目的名称,单个任务中必须唯一 |
file name 1 | 比较的第一个文件的文件名称和路径 |
file name 2 | 比较的第二个文件的文件名称和路径 |
15.wait for
使用该任务条目在运行下一个条目之前等待一段时间。
选项 | 描述 |
---|---|
name of job entry | 任务条目的名称,单个任务中必须唯一 |
wait for | 等待延时 |
unit time | 指定时间单位 |
16.abort job
中断一个任务使用该条目。
选项 | 描述 |
---|---|
name of job entry | 任务条目的名称,单个任务中必须唯一 |
message | 中断的时候添加到日志信息 |
17.zip files
这个步骤将按照在对话框中指定的选择创建一个标准的ZIP归档。
选项 | 描述 |
---|---|
name of job entry | 任务条目的名称,单个任务中必须唯一 |
source directory | 被压缩文件源目录 |
include wildcard | 文件的通配符(正则表达式)包含在归档文件中 |
exclude wildcard | 文件的通配符(正则表达式)不包含在归档文件中 |
zip file name | 目的归档文件的全名 |
compression | 压缩级别 |
if zip files exists | 如果目标存在发生的动作 |
after zipping | 归档后的操作 |
move files to | 归档后移动源文件至何方 |