SSIS 實例 從Ftp獲取多個文件並對數據庫進行增量更新。


整個流程

image

image

Step 1 放置一個FTP Task 將遠程文件復制到本地

建立FTP鏈接管理器后 Is LocalPatchVariable 設置為Ture 並創建一個變量設置本地路徑

image

Operation 設置為 Receive files

OverwriteFileAtDest 設置為True

同樣的設置遠程路徑變量

image

 

Step 2 放置一個Foreach Loop ,循環將文件內容導入到數據庫

Collection 頁中Enumerator 選擇Foreach File Enumerator

圖中 Folder: 用表達式里面的 Directory代替,變量值直接套用FTP配置建立的LocalStoreFiles變量

Files設置不變,保持 *.* 獲取目錄下所有文件

Retrieve file name ,選擇Fully qualified  (獲取文件全名,包括目錄)

image

Variable Mappings 頁 新增一個變量LoadFile 用來獲得 Fully qualified的返回值

image

Step 3 放置一個Data Flow Task 到 Foreach Loop Container並打開

    1) 創建一個Flat File Connection Manager 並選擇一個文件進行配置

image

點擊Flat File Connection Manager ,然后在屬性中配置表達式,將鏈接字符串設置為剛才設置的變量 LoadFile。用來獲取每個文件

    image

    2) 放置一個 Flat File Source 並選擇剛才配置的Flat File Connection Manager

此時可以先先測試一下效果。注意由於LoadFile現在沒有值,執行的時候SSIS檢查到可能會報錯,我們把 StoreFile 的 DelayValidation 屬性設置為True即可

image

  3) 放置一個Lookup判斷原有數據是否重復

Lookup 配置增量方式也可以參考我之前幾篇文章

[譯]Stairway to Integration Services Level 3 - 增量導入數據

[譯]Stairway to Integration Services Level 4 - 增量更新數據

[譯]Stairway to Integration Services Level 5 - 增量刪除數據

 image

image

    4) 放置一個OLE DB Destination,改名為 Staging 然后將Lookup的Lookup Match Output 連到 Staging 用來存放匹配的記錄

image

    5) 再放置一個OLE DB Destination,改名為 Stores Table 然后將Lookup的Lookup No Match Output 連到Stores Table用來放未匹配的新紀錄

image

Step 4 拖動一個Execute SQL Task到Control Flow,用來更新匹配的記錄

image

執行語句

update stores
set TerritoryID = ss.TerritoryID
,StoreName = ss.StoreName
,Address1 = ss.Address1
,Address2 = ss.Address2
,City = ss.City
,State = ss.State
,Zip = ss.Zip
from stores s
join StoreStaging ss
on ss.BusinessEntityID = s.BusinessEntityID

之后與Foreach Store File Loop 鏈接

image

Step 5 再拖一個Execute SQL Task 用來清空臨時表

image

Step6 移動已導入的文件

1) 建立一個 File Connection Manager ,並選擇‘已完成’目錄,更名為Complete Folder

image

2) 在建立一個 File Connection Manager 並隨意選擇一個csv文件,更名為StoreFilePhy

image

同樣的,設置連接字符串

image

3) 拖一個 File System Task 到 Foreach Store File Loop里面

image

進行相關設置

image

 

至此整個過程結束


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM