KETTLE-从ftp上下载txt文件插入到数据库中

最近公司要使用kettle从另一台服务器上的ftp上下载txt文件到本地  然后将数据插入到数据库中   ftp的目录是动态的  每天都会生成一个时间目录   如20180510  文件就放在这下面   我们文件名是不变的  所以整个kjb的思路就是先获取动态时间作为变量在ftp组件中使用  下载到本地后  清空表(我们是全量导入 所以清空)  然后再导入数据

折腾了半天   特此记录

首先 来个总图

这是kjb  

这是获取ftp路径的ktr  也就是为了获取动态时间的目录

这是将txt数据输入到数据库中的ktr

文件中的所有路径均为配置的  所以应在kettle.porperties中配置

接下来展示ktr的具体操作  

下图为getUrl的说明

生成记录为1条  

js代码如下:

//Script here
Date.prototype.Format = function (fmt) { 
    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 url=new Date(new Date().getTime()).Format("yyyyMMdd");

这样就获取到了时间  

设置变量 方便在kjb的ftp组件中使用

来看txt获取数据到数据库的ktr

这里如果数据有乱码 可以设置下编码方式

然后来看kjb

这里的${URL}就是刚才获取ftp路径的设置变量     接着远程目录拼接下就可以动态获取到txt文件了     之后通过

即可获取数据

over

猜你喜欢

转载自blog.csdn.net/weixin_41634885/article/details/80268929