kettle数据同步从FTP服务器上下载文件

从FTP服务器上下载文件

这个是JOB实现的是每隔一个小时从FTP服务器上下载当前时段的一个文件。此JOB要实现的核心在于时间变量的设置,同时还需要根据你要下载的文件编写相应的正则表达式。

首先我们来看变量是如何设置的:

第一:获取使用获取系统信息选项,此选项在装换当中的输入文件夹下面。

打开此选项我们可以看到有如下一些选择:

这里根据我们的需求选择“系统日期(可变)”,这个是第一步,接下来就要使用到另一个重要的选项“javascript”。

第二:javascript选项来提取我们需要的时间格式

这里我们是要分别提取系统时间的“年”、“月”、“日”、“时”四个时段的值。这个选项提供一些相应的方法来实现这个功能,我使用的是date2str(var,var)方法,此方法的说明如下:

var dValue = new Date();
Alert(date2str(dValue));
Alert(date2str(dValue,"dd.MM.yyyy"));
Alert(date2str(dValue,"dd.MM.yyyy HH:mm:ss"));
Alert(date2str(dValue,"E.MMM.yyyy","DE"));
Alert(date2str(dValue,"dd.MM.yyyy HH:mm:ss","EN"));
Alert(date2str(dValue,"dd.MM.yyyy HH:mm:ss","EN", "EST"));

这个是选项中现成提供的一个,里面还有很多。这里不单可以使用选项本身带有的,还可以自己编写相应的javascript脚本语句。

以下就我获取不同时段的代码:

years=date2str(sysdate,"yyyy");
mons=date2str(sysdate,"MM");
days=date2str(sysdate,"dd");
hous=date2str(sysdate,"HH");

 

这里一共有四个字段,这意味我们在后面要分别设置四个变量。

好,接下来就让我们来看看最后一步:变量的设置

第三:变量设置

 

我设置了四个变量:分别是“年”、“月”、“日”、“时”,全部设置为全局变量。

好,到这里我们的定时下载FTP已经完成了第一步,这个为什么要设置四个变量呢?接下来就会知道了。

然后就是FTP选项的相关设置

如图:

 第一个页面是填写相关的FTP服务的信息。填写正确之后有个“TEST CONNECTION”按钮可以测试服务器是否连接成功。在看下面有一个控制编码选项,这个选项是选择相应的文件编码格式,特别是文件在不同系统之间传输最容易导致乱码问题。这里手动指定相应的编码格式可以有效避免乱码问题。

第二个页面如下:

这里有两点需要注意一下,第一就是通配符选项。此选项是用来写相应的正则表达式来提取相应的文件。我们之前设置的变量也就是在这里使用。

我下载的是EXCL文件,文件名格式“广东电信C网拨测系统-服务质量支撑及管理系统-指标数据(2011年11月25日12点)”。我们要实现动态提取当前文件就得根据文件名当中哪些是变化的,这里明显可以看出文件名当中的时间是变化的,但是此时间不是标准的时间格式,所以我们使用了四个变量也就是如此了。

相应的正则表达式如下:

.*(${years}.*${mons}.*${days}.*${hous}.*).xls

 另一个需要注意的地方就是:

此选项可以实现相应的文件操作,比如跳过、覆盖等等一些。

以上就是从FTP服务器下载的整个JOB 的流程,这个根据自己的需求还可以做很多变化,具体的有哪些变化,就交给大家去实践中体验了。


版权声明:本文为Dkey_775原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。