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脚本执行):命令行参数传入的更多相关文章

  1. 如何让python脚本支持命令行参数--getopt和click模块

    一.如何让python脚本支持命令行参数 1.使用click模块 如何使用这个模块,在我前面的博客已经写过了,可参考:https://www.cnblogs.com/Zzbj/p/11309130.h ...

  2. powershell脚本,命令行参数传值,并绑定变量的例子

    这是小技巧文章,所以文章不长.但原创唯一,非常重要.我搜了下,还真没有人发 powershell怎样 [命令行 参数 绑定],所以我决定写成博客. 搜索关键字如下: powershell 命令行 参数 ...

  3. 自动化部署--shell脚本--1

    传统部署方式1.纯手工scp2.纯手工登录git pull .svn update3.纯手工xftp往上拉4.开发给打一个压缩包,rz上去.解压 传统部署缺点:1.全程运维参与,占用大量时间2.上线速 ...

  4. 【Shell脚本学习8】Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

    前面已经讲到,变量名只能包含数字.字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量. 例如,$ 表示当前Shell进程的ID,即pid,看下面的代码: $echo $$ 运 ...

  5. Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

    特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数是$1,第二个参数是$2. $# 传递给脚本或函数的参数个数. $* 传 ...

  6. Linux Shell 05 位置变量(命令行参数)

    在Linux shell 脚本中可能会用到一些命令行参数,常见如下: $0:脚本名称 $#:执行脚本时传入的参数个数,不包括脚本名称 $@:所有参数 $*:所有参数 $1...$9:第1个参数.... ...

  7. 【转】shell 教程——07 Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

    前面已经讲到,变量名只能包含数字.字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量. 例如,$ 表示当前Shell进程的ID,即pid,看下面的代码: $echo $$ 运 ...

  8. linux bash Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

    在linux下配置shell参数说明 前面已经讲到,变量名只能包含数字.字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量. 例如,$ 表示当前Shell进程的ID,即pid ...

  9. Python 处理脚本的命令行参数(二):使用click

    安装click pip install click 使用步骤 使用@click.command() 装饰一个函数,使之成为命令行接口 使用@click.option() 等装饰函数,为其添加命令行选项 ...

随机推荐

  1. linux内存管理初始化

    内存管理子系统是linux内核最核心最重要的一部分,内核的其他部分都需要在内存管理子系统的基础上运行.而对其初始化是了解整个内存管理子系统的基础.对相关数据结构的初始化是从全局启动例程start_ke ...

  2. java记事本开发

    今天我想要分享的是一个用java写的一个记事本程序.我知道现在市面上有各种各样的记事本了,但是我发现有的写的功能不够完善,或者是代码层次结构不够清晰,有的甚至看了之后云里雾里的,有的还不乏了非常明显的 ...

  3. 设置 NSZombieEnabled 定位 EXC_BAD_ACCESS 错误

    我们做 iOS 程序开发时经常用遇到 EXC_BAD_ACCESS 错误导致 Crash,出现这种错误时一般 Xcode 不会给我们太多的信息来定位错误来源,只是在应用 Delegate 上留下像 T ...

  4. SQLite 语法(http://www.w3cschool.cc/sqlite/sqlite-syntax.html)

    SQLite 语法 SQLite 是遵循一套独特的称为语法的规则和准则.本教程列出了所有基本的 SQLite 语法,向您提供了一个 SQLite 快速入门. 大小写敏感性 有个重要的点值得注意,SQL ...

  5. Android开发基础规范(二)

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52614696 前言:Androi ...

  6. How to speed up Remote Desktop Connection in Win7

    run following command in DOS window: netsh interface tcp set global autotuninglevel=disabled or nets ...

  7. Hadoop:Hadoop单机伪分布式的安装和配置

    http://blog.csdn.net/pipisorry/article/details/51623195 因为lz的linux系统已经安装好了很多开发环境,可能下面的步骤有遗漏. 之前是在doc ...

  8. 如何构建Android MVVM 应用框架

    概述 说到Android MVVM,相信大家都会想到Google 2015年推出的DataBinding框架.然而两者的概念是不一样的,不能混为一谈.MVVM是一种架构模式,而DataBinding是 ...

  9. IT女孩特不烦恼---九月实习总结

    对着岁月落笔,画出一场清风,那是最真的笑容 一溜烟的功夫,小编来实习Android已经四个月了,从刚开始的电商项目到现在的车段子项目,小编渐渐对这个曾经陌生的名字慢慢扭转变成熟悉的面孔,四个月的时间, ...

  10. [mysql5.6] 主从更换ip之后重新建立同步

    情况时这样的: 主从系统 centos6.5 mysql5.6 由于机房迁移ip地址变了,导致原来的主动无法同步,于是需要重新建立主从关系. 主 192.168.1.23 从 192.168.1.22 ...