天天看點

ftp 抽取檔案

背景:

使用者将一批資料通過ftp的方式提供給我方,我方需要按照資料的不同類型抽取到不同業務表中。

思路:

通過ftp登陸到對方檔案庫中,将對方的檔案名稱拷貝過來

與我方抽取的檔案名稱對應,無則下載下傳并抽取到資料庫中

過程

按照上面思路設計ftp腳本,腳本執行成功,可是在添加到執行計劃就沒有執行

單擊腳本指令可以生成文本檔案,在執行任務中添加任務點選運作也可以文本檔案,但是自己運作時就沒有出現文本檔案,現在卡在這個關口上面。

1)

重新設定資料抽取方案

由于ftp中檔案較少,檔案内容較小,全量加載

ftp 抽取檔案
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

for /f "tokens=4" %%i in ('findstr "<DIR>" ftpdir.txt') do (

echo cd %%~i>>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]設定變量

第二步:自動變量比對新的資料檔案(改成新的循環取出每個資料檔案)

主要是正規表達式,第二步需要自己好好研究一下正規表達式,我們做成循環就不需要比對正規表達式了

跳過第二步

第三步:循環操作

在冰焰的幫助下調試出循環操作,順便打下廣告: