在上乙個隨筆中我們處理了乙個010305c.dat檔案,如果在乙個資料夾中有多個dat檔案應該怎麼辦呢? 這裡就需要使用foreach loop container任務來迴圈處理檔案,這個需要使用多個dat檔案。
迴圈
雙擊開啟邊界介面,點選開啟collection標籤介面,可以看到enumerator欄內預設選擇foreach file enumerator,但是需要點選開啟下拉列表框重新選擇foreach file enumerator,然後在folder欄傍邊點選browser選擇目錄c:\ssisdemos,files欄內輸入如圖5-15
圖5-15
設定動態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任務。
動態呼叫SSIS包
declare cmd varchar 1000 declare sourceid int set sourceid 2 declare ssispath varchar 1000 set ssispath sql package server txchen bank maxconcurrent 1...
在執行SSIS包時,如何動態更新變數值
實現方式 若要動態更新變數,可以為變數建立配置,將這些配置部署到包中,然後在部署包時更新配置檔案中的變數值。這樣,在執行時,包就可以使用更新後的變數值。下面通過乙個簡單的例子來說明如何實現動態更新變數值。例子要求 把一張order表從遠端計算機例項 triy 2fe792bb5d sql2008de...
高階for 迴圈建立陣列和集合
高階for迴圈 格式 for 資料型別 變數名 被遍歷的集合 collection 或者陣列 對集合進行遍歷。只能獲取元素,當時不能對集合進行操作。可變引數 陣列引數的簡寫形式,不用每一次都手動的建立陣列物件。只要將要操作的元素作為引數傳遞即可。隱式將這些引數封裝成了陣列。使用時,可變引數一定要定義...