【Kettle】第一篇,Pan 的使用
Pan使用文档
1.什么是Pan?
Pan是可以执行转换的程序,转换可以使Spoon设计出来的ktr格式文件也可以是资源库里的。通常转换都是以一定间隔时间去计划执行的(通过PDI企业版资源库计划功能,或者第三方工具像Cron和windows任务计划功能)。
2.安装
第一步安装Oracle公司的java 1.7以上运行环境。之后,选择一个版本下载并解压 PDI software: pdi-ce-VERSION.zip压缩包,在解压文件夹里面你会发现许多文件(废话)。
当你使用Unix风格运行环境(Solaris,Linux,OSX,...),需要给shell脚本执行权限,可以执行下面的命令让kettle文件夹下所有的shell脚本有执行权限;
cd data-integration chmod +x *.sh
2.1启动Pan
为了在不同平台使用,Kettle提供了不同的启动方式:
- Pan.bat :windows 平台运行
- pan.sh :Unix平台和OSX平台运行
Pan能够在安装有Java 1.7以上的任何平台运行。
3.命令行操作选项
以下是你可以使用的命令行操作选项。
重要提示:
- 在windows平台上,在选项中使用(“-”)减号和等号(“=”)有问题,所以从2.2.2开始,新增加选项中可以使用斜线(“/”)和冒号(“:”);
- 斜线后面跟的是选项字段
- 如果选项值中存在空格,使用单引号或者双引号将他们包起来,看下面的例子了解更多。
/option:value
以下为有效的选项。
3.1显示版本信息
-version
这个选项显示了Kettle核心二进制文件(kettle.jar)的版本。也显示了编译版本号以及编译时间等等。
3.2启动XML文件
-file=filename
这个选项启动定义好的XML文件(.ktr:Kettle的转换文件)
3.3命名参数
-param
你可以命名一个参数并赋值,举个例子:-param:FOO=value
-listparam
列出制定指定转换中所有的命名参数(名字,默认值以及描述)
3.4设置日志文件
-log=Logging Filename
指定日志文件,默认是标准输出。
3.5设置日志等级
-level=Logging Level
这个等级选项可以设置在运行转换的日志等级。以下是可以取的值:
- Error:只显示错误信息
- Nothing:不做任何日志输出
- Minimal:仅仅最小输出
- Basic:基本信息输出,默认日志级别
- Detailed:详细日志输出
- Debug:调试使用,非常详细
- RowLevel:行级别日志,会产生大量日志
3.6选择一个资源库
-rep=Repository name
使用资源库名字连接至资源库,同时你也需要指定下面的操作选项 --user , --pass 以及 --trans 。你也可以在环境变量中指定 KETTLE_REPOSITORY 这些操作选项值。
3.7设置资源库的用户名
-user-Username
这个是你想要连接的资源库的用户名,你也可以在环境变量中指定 KETTLE_USER。
3.8设置资源库密码
-pass=Password
这是你想连接的资源库的用户密码,同样你也可以在环境变量中指定 KETTLE_PASSWORD。
3.9选在资源库中的转换启动
-trans=Transformation Name
利用这个操作选项可以选择资源库中的转换。
3.10列出资源库中所有目录
-listdir=Y
在使用 -dir 时,打印出资源库目录下所有子目录。
3.11设置资源库目录
-dir=directory
指定资源库目录,资源库目录可以像是这样的:
- 根目录:/
- 子目录:/production/Dimensions/
从2.2.2版本开始,分隔符 / 可以被用到各种平台。
3.12列出资源库下所有转换
-listtrans=Y
在使用 -dir 时,列出资源库目录下所有的转换。
3.13列出所有可用的资源库
-listrep=Y
列出所有的已经定义的资源库
3.14导出整个资源库
-exprep=filename.xml
这个操作选项导出整个资源库至一个XML文件,回复成资源库需要使用Spoon的资源库管理器,详情参见Spoon文档。
3.15日志禁止写入资源库
-norep=Y
如果你已经设置了环境变量 KETTLE_REPOSITORY, KETTLE_USER, KETTLE_PASSWORD, 你可以阻止 pan 将日志写入到资源库。举个例子,如果你想执行一个xml文件格式的转换。
4.路径
在运行以下例子之前,请确保你在data-integration目录下。如果你将这些脚本文件放到批处理或者shell脚本中,将会很容易修改目录为安装目录。
如果data-integration被安装在 D:\ drive
D: cd \data-integration
如果data-integration 被安装在Unix系统的 /product 目录下:
cd /product/data-integration/
5.从文件运行转换
从windows平台运行一个转换文件
pan.bat /file:"D:\Transformations\Customer Dimension.ktr" /level:Basic
在Linux平台上运行一个转换文件
pan.sh -file="/PRD/Customer Dimension.ktr" -level=Minimal
6.从资源库运行一个转换
这个例子是在Windows平台从资源库运行一个转换(一行输入没有返回...)
pan.bat /rep:"Production Repository" /trans:"update Customer Dimension" /dir:/Dimensions/ /user:matt /pass:somepassword123 /level:Basic
7.重定向输出
如果你不想输出出现在屏幕,更想输出到日志文件,你可以使用重定向。这个例子添加pan的输出到一个不断增长的日志文件。
pan.sh -file="/PRD/trans.ktr" -level=Minimal >> /LOG/trans.log
这个例子将pan输出每次重写进文件
pan.bat /file:C:\PRD\trans.ktr /level:Basic > C:\LOG\trans.log
8.返回码
pan 基于异常事件返回相应的错误码:
- 0:转换运行正常
- 1:处理过程中出错
- 2:在加载/运行转换过程中发生意外错误
- 3:无法解析和初始化此转换
- 7:无法从XML或资源库加载转换
- 8:加载步骤或插件时出错(主要是加载其中一个插件时出错)
- 9:Command line usage printing
9.定时调度(scheduling)
9.1在windos平台上定时调度转换
最好的方法是先在DOS提示符下测试命令。然后,您可以使用Windows任务调度程序启动此命令。Windows 2000版本之后有一个GUI,通过控制面板可以做到这一点。它也可以使用命令行来做这个:
at 23:30 /every:Monday,Wednesday,Friday "D:\update_dimensions.bat"
查看定时调度命令清单(To see a list of the scheduled commands simply type):
at
9.2在Unix平台上定时调度一个转换
首先创建一个shell脚本来运行所有的转换,然后你只需要定时调度运行这个shell脚本就可以了。
在Unix平台最简单的定时调度命令方式是使用cron 表达式,你可以使用下面的命令:
crontab -e
然后你可以在命令中输入你要运行的时间(Then you can enter the time at which the command needs to be run as well as the command
on a single line in the text file that is presented)
- Minute:分钟,0-59
- Hour:小时,0-23
- Month day:天,1-31
- Month:月, 1-12
- Weekday:周, 0-6, 0=星期天
你可以为每一个参数指定一个数字以上的值,两个数字使用连字符 - 分隔起来,这意味着是一个数字范围。如果你使用逗号分隔两个数字,这意味着可以取不同的值。如果你使用 * 代替一个数字,意味着可以取任意的小时、分钟、天、月或者周。
因此,如果你想在每周工作日每个小时在15分和45分时更新dimensions ,可以输入下面的cron命令:
# # Launches the update of the dimensions in the warehouse # 15,45 * * * 1-5 /PROD/update_dimensions.sh #