kettle文件自动化部署(shell脚本执行):命令行参数传入
shell脚本中调用kitchen 和 pan去执行,job和transformation文件。分 windows和 dos系统两种。
举个简单的小例子
shell脚本:
export JAVA_HOME=/usr/local/java/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/mysql-connector-java-5.1.18-bin.jar
export KETTLE_HOME=/home/www/allyes/a3tracker/bi/etl/kettle/kh_cloud/
export LC_ALL=en_US.UTF-8
echo "KETTLE_HOME=$KETTLE_HOME"
echo "starting..."
yesterdayid=`date -d $yesterday +%Y%m%d`
/home/www/allyes/a3tracker/bi/etl/kettle/data-integration/kitchen.sh -param:Yesterday='2014-02-24' -file /home/www/allyes/a3tracker/bi/etl/kettle/etlscript/playdata_etl_day.kjb>/home/www/allyes/a3tracker/bi/etl/kettle/logs/a3tracker_cloud_etl_"$yesterdayid"_"$vardate".txt
完整的脚本
#!/bin/sh
check_date()
{
[ $# -ne 1 ] && return 1
_lenStr=`expr length "$1"`
[ "$_lenStr" -ne 10 ] && return 1
date -d $1 "+%Y/%m/%d" | grep -q $1
if [ $? -eq 1 ]
then
return 1
else
return 0
fi
return 0
}
vardate=`date +%Y%m%d%H%M%S`
echo today is `date +%Y/%m/%d`
yesterday=`date -d "yesterday" +%Y/%m/%d`
while [ -n "$1" ]; do
case $1 in
-d)
shift
yesterday=$1
echo "your input is $yesterday"
shift;;
*)
echo "$1 is wrong paratism"
break;;
esac
done
check_date $yesterday
if [ $? -eq 1 ];then
echo "date format error! date format:(<yyyy/mm/dd>)"
exit 1
fi
echo Data aggregation date : $yesterday
export JAVA_HOME=/usr/local/java/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/mysql-connector-java-5.1.18-bin.jar
export KETTLE_HOME=/home/www/allyes/a3tracker/bi/etl/kettle/kh_cloud/
export LC_ALL=en_US.UTF-8
echo "KETTLE_HOME=$KETTLE_HOME"
echo "starting..."
yesterdayid=`date -d $yesterday +%Y%m%d`
/home/www/allyes/a3tracker/bi/etl/kettle/data-integration/kitchen.sh -param:Yesterday=$yesterday -file /home/www/allyes/a3tracker/bi/etl/kettle/etlscript/playdata_etl_day.kjb>/home/www/allyes/a3tracker/bi/etl/kettle/logs/a3tracker_cloud_etl_"$yesterdayid"_"$vardate".txt
echo "done!"
命令行参数传入:
几篇讲解:
http://blog.csdn.net/john_f_lau/article/details/9260863
http://forums.pentaho.com/showthread.php?54423-Passing-parameters-to-jobs-on-kitchen-command-line
http://wiki.pentaho.com/display/EAI/Named+Parameters
http://wiki.pentaho.com/display/EAI/Kitchen+User+Documentation
http://wiki.pentaho.com/display/EAI/Named+Parameters
http://blog.csdn.net/qqzyb/article/details/8939517
http://blog.sina.com.cn/s/blog_543e73a80100k0vz.html
http://www.cnblogs.com/wxjnew/p/3620792.html
两个例子,传入多个参数:
/home/www/allyes/aso/kettle/kitchen.sh -file /home/www/allyes/aso/etl/test.kjb -param:os='1' -param:appstore='all' -param:dt='2014-02-24' >/home/www/allyes/aso/etl/log.txt 2>/home/www/allyes/aso/etl/error.txt
/home/www/allyes/aso/kettle/kitchen.sh -file /home/www/allyes/aso/etl/test.kjb -param:os=1 -param:appstore='all' -param:dt='2014-02-24' -level=Detailed >/home/www/allyes/aso/etl/log.txt
命令行执行,options 后面可以是"="也可以是":"也可以是空格,三者都行,如kitchen.bat /file d:\ 或者 -file=D:\ 或者/file:D:\
kitchen.bat /norep -file=D:/kettledata/mysal2orcle.kjb >> kitchen_%date:~0,10%.log
参数传入后,必须先在transformation中的setting设置里添加对应参数。然后用get variables控件获得
http://wiki.pentaho.com/display/EAI/Named+Parameters
http://type-exit.org/adventures-with-open-source-bi/2010/07/using-named-parameters-in-kettle/
两种格式(住linux下可以没有双引号quotation,windows要求参数parameter必须有双引号)
1:kitchen /file:"MyJob.kjb" /param:ServerName=MyServer
多个param:
Linux: ./kitchen.sh -file:job.kjb -param:files.dir=/opt/files -param:max.date=2010-06-02
Windows: Kitchen.bat -file:job.kjb “-param:files.dir=/opt/files” “-param:max.date=2010-06-02″
2:kitchen /file:"your job name.kjb" "command line argument 1" "command line argument 2" "command line argument 3"....
listparam,也是使用多个parameters,如:
sh pan.sh -file:/tmp/foo.ktr -listparam
Parameter: MASTER_HOST=, default=localhost : The master slave server hostname to connect to
Parameter: MASTER_PORT=, default=8080 : The master slave server HTTP control port
也可以写成,等同于:
user@host:$ sh pan.sh -file:/tmp/foo.ktr -param:MASTER_HOST=192.168.1.3 -param:MASTER_PORT=8181
Windows requires you to use quotes around the parameter otherwise the equals sign is treated as a space by the command interpreter:
c:\> pan.sh -file:/tmp/foo.ktr "-param:MASTER_HOST=192.168.1.3" "-param:MASTER_PORT=8181"
日志的选择,不同参数的设定:
-level 日志级别:(运行界面,log显示框左上角三个小图标,最后一个扳手锤子为设置level)
Rowlevel: print所有在Kettle中的有效日志,包括在大量复杂步骤的信息;
Debugging: 产生大量的日志信息,主要用于调试,但是不是在行级别(row level);
Detailed:允许用户看到比基本日志级别更富比较性的信息,额外的信息实例包括SQL查询语句和一般的DDL都会产生。
Basic:默认的日子级别;仅仅打印这些能够反映在步骤或者任务条目上的信息。
Minimal:通知你仅仅关于一个任务或者转化的信息。
Errorlogging only: 如果那儿有一个错误,显示错误消息;否则,什么都不显示。
Nothingat all: 即使当有错误存在的时候,不要产生任何日志。
kettle文件自动化部署(shell脚本执行):命令行参数传入的更多相关文章
- 如何让python脚本支持命令行参数--getopt和click模块
一.如何让python脚本支持命令行参数 1.使用click模块 如何使用这个模块,在我前面的博客已经写过了,可参考:https://www.cnblogs.com/Zzbj/p/11309130.h ...
- powershell脚本,命令行参数传值,并绑定变量的例子
这是小技巧文章,所以文章不长.但原创唯一,非常重要.我搜了下,还真没有人发 powershell怎样 [命令行 参数 绑定],所以我决定写成博客. 搜索关键字如下: powershell 命令行 参数 ...
- 自动化部署--shell脚本--1
传统部署方式1.纯手工scp2.纯手工登录git pull .svn update3.纯手工xftp往上拉4.开发给打一个压缩包,rz上去.解压 传统部署缺点:1.全程运维参与,占用大量时间2.上线速 ...
- 【Shell脚本学习8】Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
前面已经讲到,变量名只能包含数字.字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量. 例如,$ 表示当前Shell进程的ID,即pid,看下面的代码: $echo $$ 运 ...
- Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数是$1,第二个参数是$2. $# 传递给脚本或函数的参数个数. $* 传 ...
- Linux Shell 05 位置变量(命令行参数)
在Linux shell 脚本中可能会用到一些命令行参数,常见如下: $0:脚本名称 $#:执行脚本时传入的参数个数,不包括脚本名称 $@:所有参数 $*:所有参数 $1...$9:第1个参数.... ...
- 【转】shell 教程——07 Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
前面已经讲到,变量名只能包含数字.字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量. 例如,$ 表示当前Shell进程的ID,即pid,看下面的代码: $echo $$ 运 ...
- linux bash Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
在linux下配置shell参数说明 前面已经讲到,变量名只能包含数字.字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量. 例如,$ 表示当前Shell进程的ID,即pid ...
- Python 处理脚本的命令行参数(二):使用click
安装click pip install click 使用步骤 使用@click.command() 装饰一个函数,使之成为命令行接口 使用@click.option() 等装饰函数,为其添加命令行选项 ...
随机推荐
- 十大豪门推送sdk,哪个更适合你
转自:http://jingyan.baidu.com/article/d621e8da0fd7042865913ff5.html 推送,使得开发者可以即时地向其应用程序的用户推送通知或者消息,与用户 ...
- WebService案例入门(基础篇)
[版权申明:本文系作者原创,转载请注明出处] 文章出处:http://blog.csdn.net/sdksdk0/article/details/52106690 作者:朱培 ID:sdksdk0 邮 ...
- Swift基础之使用Alamofire库进行网络请求和断点下载
好久没有写过Swift相关的文章博客了,这里我就展示一下关于使用Alamofire库的方法 1.什么是Alamofire (1)Alamofire 的前身是 AFNetworking.AFNetwor ...
- iOS 滚动视图的复用问题解决方案
LazyScroll是什么 LazyScrollView 继承自ScrollView,目标是解决异构(与TableView的同构对比)滚动视图的复用回收问题.它可以支持跨View层的复用,用易用方式来 ...
- Matlab 2015b 启动时崩溃 MATLAB crashes during startup on Ubuntu 16.04
Matlab 启动时崩溃 MATLAB crashes during startup on Ubuntu Matlab 2015B Ubuntu 16.04 之前解决过,更新后问题又来了. 出 ...
- 【Java二十周年】Delphi转行java的一些小感触
本文纯属一届小码农对java使用过程的体验感触 目录: 初遇java编程语言 与java的擦肩 深入java 跨平台性 开源支持 web的支撑 初遇java编程语言 刚上大学的时候,完全是个电脑盲.刚 ...
- 详解EBS接口开发之采购订单导入
采购订单常用标准表简介 1.1 常用标准表 如下表中列出了与采购订单导入相关的表和说明: 表名 说明 其他信息 po.po_headers_all 采购订单头 采购订单号,采购类型,供应商,地点, ...
- 2apt-get命令,deb包安装,源码安装
1 安装卸载软件 更新源服务器列表 sudovi /etc/apt/sources.list 更新完服务器列表后需要更新下源 sudoapt-get update 更新源 sudoapt-get in ...
- Android 玩转IOC,Retfotit源码解析,教你徒手实现自定义的Retrofit框架
CSDN:码小白 原文地址: http://blog.csdn.net/sk719887916/article/details/51957819 前言 Retrofit用法和介绍的文章实在是多的数不清 ...
- UNIX网络编程——原始套接字的魔力【续】
如何从链路层直接发送数据帧 上一篇里面提到的是从链路层"收发"数据,该篇是从链路层发送数据帧. 上一节我们主要研究了如何从链路层直接接收数据帧,可以通过bind函数来将原始套接字绑 ...