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