Kettle的使用分享~动态参数~JS脚本~多文本文件输入

Kettle设置参数

通过js脚本设置参数变量并进行赋值,让参数变得可动态变化,便于后期定时任务的执行

生成记录

添加一个"输入->生成记录"对象,用于变量的声明
Kettle的使用分享~动态参数~JS脚本~多文本文件输入_第1张图片

javascript代码

添加一个"脚本->Javascript脚本"对象,用于动态设置变量值(这里的例子我写的是动态获取日期参数,你可以根据你的需求进行定义和赋值,照葫芦画瓢就行)

Date.prototype.Format = function(fmt) { //author: meizz
    var o = {

        "M+": this.getMonth() + 1,
        //月份
        "d+": this.getDate(),
        //日
        "h+": this.getHours(),
        //小时
        "m+": this.getMinutes(),
        //分
        "s+": this.getSeconds(),
        //秒
        "q+": Math.floor((this.getMonth() + 3) / 3),
        //季度
        "S": this.getMilliseconds() //毫秒
    };

    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));

    for (var k in o)

    if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr

    (("" + o[k]).length)));

    return fmt;

}

//设置文件目录
var dirStr = "E:\\code\\foresee\\kt\\bszs1129";
setVariable("dirStr",dirStr,"s");

//获取前一天文件名
var today = new Date();
today.setTime(new Date().getTime()-24*60*60*1000);

//获取前一天文件名的字符串
var todayStr = today.Format("yyyy-MM-dd");
setVariable("todayStr",todayStr,"s");

//设置后面sql查询所需要的参数
var todaySqlStr = "%"+todayStr+"%";
setVariable("todaySqlStr",todaySqlStr,"s");

//var dateStr = "bszs24[8-9]-2018-[0-3][0-9]-[0-3][0-9].log";
//设置后面文件正则匹配的字符串
var dateStr = "bszs24[8-9]-"+todayStr+".log";
setVariable("dateStr",dateStr,"s");

Kettle的使用分享~动态参数~JS脚本~多文本文件输入_第2张图片

根据参数值获取文件名

Kettle的使用分享~动态参数~JS脚本~多文本文件输入_第3张图片

文本文件输入

Kettle的使用分享~动态参数~JS脚本~多文本文件输入_第4张图片

你可能感兴趣的:(kettle)