kettle变量及常用备注

我以前使用Talend作为ETL工具,但总感觉非常麻烦,特别是在变量方面,而且网上也没多少资料,我的文章反倒被看了不少;书也没有。后来接触kettle,感觉上手非常快,但和talend比起来,有一个缺点,就是容易死,而且死后不报警。下面是在使用kettle中的总结的一点经验。

1、命令行窗口执行kettle。绝大多数kettle操作员,仍然在那个耗费内存的窗口界面中执行命令,导致靠人工天天监控,过不了几天就死,然后人工启动。其实,kettle也可命令行窗口启动。他们分别是pan 和 kitchen 。他们分别在windows下和linux下都有可执行命令。pan启动的是“转换”,kitchen启动的是“job”。他们的命令基本一样,如制作一个 .bat文件,内容如下即可:

cd D:\data-integration
kitchen /file D:\etltest\jobOK.kjb

2、死机报警。这个kettle没有talend好,但即使是talend也不是每次在死之前都能来得及报警,所以最好的方法还是自己写一个监控并启动程序。我写了一个,非常好,如果谁想要,可以找我要: xxgaj@126.com

3、内置变量。最常用的是kettle自带的那几个目录变量,调用方法是按 ctrl + Alt + 空格。 kettle的问题是,即使到了5.4,这里扔有bug,即转换或job说的目录不准确。后来我发现,如果不使用资源库,就OK;使用资源库,在测试时不正确,在用pan时正确。  我原来都是将一些变量、参数等放到远程数据库中,但后来发现这个内置变量后,就改用本地文件作为临时保存参数的方法,这样容易迁移。

4、作业中的设置变量。在作业中设置的变量,和在转换中的变量是不一样的。作业中的“设置变量”,其结果是“一行”,所以可以在其内的转换中,使用${变量名}来调用它;否则在作业中设置的变量是不能这样用的。 另外,这种变量如果是文本型,那他就是自带引号的,如写:where xm like '张'${变量}%,其结果就会输出为: where xm like '张''变量内容'% ,从而导致出错。

5、转换中的变量。在转换中,可以通过“设置变量”、javascript中var、各种输入 等设置和获取变量,但这些变量都是“多行”的,所以在SQL语句中,不能使用 where xm=${变量名}来引用的。

6、内部(转换中)变量在“表输入”SQL语句中的写法。因为不是从作业中过来的,所以不能写为 ${},只能写为问号 ?,且变量顺序一定要按上级传递过来的顺序来。且还有一个问题,就是不要忘记勾选“替换变量”和选择“从步骤插入数据”。

7、变量的丢失问题。好好的变量,如果遇到“文本文件输入”、“表输入”等控件,之前的变量要么看不到(5.01版),要么看到(5.4版)实际运行出错。解决方法有2个:①在“表输入”时,将原来的变量通过?带进来,即可往下传递了。②从需要的环节分支(线选择复制而非分发),后来再合。合的时候应选择 “笛卡尔合并”。

8、变量变名。用“字段选择”控件。

9、“表输出”的字段对应。勾选“指定数据库字段”,点击“数据库字段”标签页,再点击“获取字段”按钮,在表字段一栏选择对应的字段即可。

    先这么点,以后再补充。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值