創建SSIS包—循環和動態package
在上一個隨筆中我們處理了一個010305c.dat文件,如果在一個文件夾中有多個dat文件應該怎么辦呢? 這里就需要使用Foreach Loop container任務來循環處理文件,這個需要使用多個dat文件。
循環
首選對路徑C:\SSISDemos下的所有.DAT文件進行循環操作并下載到數據庫中。使用Foreach Loop循環執行操作。這里還在上隨筆的Package里拖放一個Foreach Loop Container,重命名為Loop Through Files。
雙擊打開邊界界面,點擊打開Collection標簽界面,可以看到Enumerator欄內默認選擇Foreach File Enumerator,但是需要點擊打開下拉列表框重新選擇Foreach File Enumerator,然后在Folder欄傍邊點擊Browser選擇目錄C:\SSISDemos,Files欄內輸入如圖5-15

圖5-15
現在需要設置Foreach File Eumeration中的變量。點擊Variable Mappings標簽界面在Variable下拉列表框中選擇<New Variable…>,打開Add Variable對話框。為這個任務指定變量使用范圍。為變量命名為ExtractFileName,其他設置保持默認,點擊OK退出編輯界面。
設置動態package
循環操作創建之后,需要在ConnectionManager中設置文件名和循環操作中產生的文件名一致。右擊我們先前創建的Corporation Extract選擇屬性,在屬性面板中點擊Expressions對應的按鈕。
打開Expressions Editor在Property下拉列表框中選擇ConnectionString,如圖5-16,可以直接在Expression中輸入@[User::ExtractFileName]或者點擊Expression欄中的按鈕將這個變量拖放到表格中。如果輸入變量要保證和Foreach Loop中設置的變量一致。

圖5-16
設置完成之后屬性如圖5-17

圖5-17
這樣每次在C:\SSISDemos路徑下查找到一個.DAT文件,ExtractFileName變量將被設置為帶路徑的文件名,這樣這個Package會對每個.DAT文件進行處理。
現在我們遺漏的一個地方是將文件數據導入到數據庫之后還沒有把文件歸檔,首先在C:\SSISDemos目錄下新建一個子文件夾C:\SSISDemos\Archive。在Connection Manager下右擊新建一個文件鏈接,Usage Type選擇Existing Folder,然后點擊下方Browser指向C:\SSISDemos\Archive,點擊OK并重命名為Archive File。
然后再Loop Through Files內拖放一個File System任務并重命名為Archive File,使用綠色箭頭把它和Loop Corporate Data連接起來,重命名為Archive File。
雙擊Archive File打開編輯界面如圖5-17,設置Operation選項為Move File,很明顯這個意思就是將文件復制到目的文件夾內,這個屬性還有很多的選擇項,可以根據意思揣度出來是要進行什么操作。Destination設置為新建的Archive File連接,SourceConnection設置為Corporation Extract連接。最后整個Package首先抽取文件中的數據然后將文件轉移到指定的路徑內。

圖5-17
現在可以運行整個Package,點擊保存,運行,最后運行成功之后的Package如圖5-18。

圖5-18
【創建SSIS包】總結
這一節主要了解基本的SSIS轉換,任務,容器。我們建立了一個完整的Package并將錯誤信息記錄下來,然后把它放在一個循環中,找到每一個.DAT文件,將文件中的數據導入到數據庫中,最后將文件放到另外一個目錄中。下面的文章中將介紹更加復雜的ETL任務。
作者:Tyler Ning
出處:http://www.rzrgm.cn/tylerdonet/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,如有問題,請微信聯系冬天里的一把火
浙公網安備 33010602011771號