背景:
使用者将一批資料通過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
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]設定變量
第二步:自動變量比對新的資料檔案(改成新的循環取出每個資料檔案)
主要是正規表達式,第二步需要自己好好研究一下正規表達式,我們做成循環就不需要比對正規表達式了
跳過第二步
第三步:循環操作
在冰焰的幫助下調試出循環操作,順便打下廣告: