ftp 抽取文件

简介: 背景: 用户将一批数据通过ftp的方式提供给我方,我方需要按照数据的不同类型抽取到不同业务表中。 思路: 通过ftp登陆到对方文件库中,将对方的文件名称拷贝过来 与我...
背景:

用户将一批数据通过ftp的方式提供给我方,我方需要按照数据的不同类型抽取到不同业务表中。

思路:

通过ftp登陆到对方文件库中,将对方的文件名称拷贝过来

与我方抽取的文件名称对应,无则下载并抽取到数据库中

过程

按照上面思路设计ftp脚本,脚本执行成功,可是在添加到执行计划就没有执行

单击脚本命令可以生成文本文件,在执行任务中添加任务点击运行也可以文本文件,但是自己运行时就没有出现文本文件,现在卡在这个关口上面。

1)
重新设置数据抽取方案

由于ftp中文件较少,文件内容较小,全量加载









这样就可以将所有文件下载下来,总共200m左右的文件,下载时间差不多是5min(记住服务器不同,可能时间不太一样,只作参考)
其他步骤就比较简单






2)重新检查方执行计划发现没有设置无限性,导致程序没有运行

bat文件内容
@echo off
set h=xxx
set u=xxxx
set p=xxxx123
echo open %h%>ftp.txt
echo %u%>>ftp.txt
echo %p%>>ftp.txt
echo dir>>ftp.txt
echo bye>>ftp.txt
ftp -s:ftp.txt>e:\ftpdir.txt
echo open %h%>ftp.txt
echo %u%>>ftp.txt
echo %p%>>ftp.txt
for /f "tokens=4" %%i in ('findstr "<DIR>" ftpdir.txt') do (
echo cd %%~i>>ftp.txt
echo dir>>ftp.txt
echo cd ..>>ftp.txt)
echo bye>>e:\ftp.txt
ftp -s:ftp.txt>e:\ftpfile.txt

这样就可以读取e:\ftpdir.txt文件,通过与之前的数据比较查找那个是新的文件了

获取到新的文件名称就需要将其放到ftp控件去下载,ftp控件中有通配符,考虑到文件名称可能没有一个类似的,就要循环去下载。


第一步:如何设置自动变量


生成变量数据就可以通过后期的sql语句去将所有的值获取出来

请看[kettle]设置变量

第二步:自动变量匹配新的数据文件(改成新的循环取出每个数据文件)

主要是正则表达式,第二步需要自己好好研究一下正则表达式,我们做成循环就不需要匹配正则表达式了

跳过第二步

第三步:循环操作

冰焰的帮助下调试出循环操作,顺便打下广告:
http://www.ukettle.org/forum.php?mod=viewthread&tid=79&fromuid=5


其实在本次方案最初的思路中没有想到要使用for循环,但是只认为是单个文件,或者几个文件,没想到测试中发现文件生成的时间不定,生成的个数不定。





目录
相关文章
|
4月前
|
安全 算法 网络协议
【Linux】文件服务FTP(File Transfer Protocol)
【Linux】文件服务FTP(File Transfer Protocol)
82 0
|
4月前
|
开发框架 Java 数据处理
多sheet页导出 + FTP上传文件实战
多sheet页导出 + FTP上传文件实战
|
9月前
|
网络协议 安全 Linux
小白带你学习文件共享服务器FTP和SAMBA的学习(二十二)
小白带你学习文件共享服务器FTP和SAMBA的学习(二十二)
156 0
文件复制到ftp服务器时发生错误,请检查是否有权限将文件放到该服务器上
文件复制到ftp服务器时发生错误,请检查是否有权限将文件放到该服务器上
5284 0
|
1月前
|
Java
Java SpringBoot FTP 上传下载文件
Java SpringBoot FTP 上传下载文件
74 0
|
4月前
|
存储 Linux 文件存储
网络文件共享ftp
网络文件共享ftp
|
4月前
|
存储 Unix Linux
LabVIEW与实时目标之间的FTP文件
LabVIEW与实时目标之间的FTP文件
164 0
|
4月前
|
Java
java上传、下载、预览、删除ftp服务器上的文件
java上传、下载、预览、删除ftp服务器上的文件
|
4月前
|
监控 安全 测试技术
使用pyftpdlib组件实现FTP文件共享
使用pyftpdlib组件实现FTP文件共享
78 0
Java——通过Java代码从ftp服务器下载文件
Java——通过Java代码从ftp服务器下载文件