2016-07-25 45 views
0

我看到類似的問題,但沒有解決我的具體需求。我有了一個SSIS包對於文件枚舉和模式匹配的每個循環,像這樣帶有日期時間文件匹配:SSIS包循環通過文件夾開始與最早的文件

bookreview_daily _ * TXT

這一個文件,是例如像這樣匹配:

bookreview_daily_2016_06_30.txt。目前我必須處理每個文件,分別從最早的日期開始。我希望能夠遍歷文件夾並處理每個文件,從最早的文件開始。如果我有以下文件:

bookreview_daily_2016_06_30.txt

bookreview_daily_2016_07_01.txt

bookreview_daily_2016_07_02.txt

文件名爲bookreview_daily_2016_06_30.txt應該首先處理,其次是文件bookreview_daily_2016_07_01.txt然後bookreview_daily_2016_07_02.txt作爲最後一個要處理的文件。有沒有一個乾淨,高效的方式來完成這個?

  • 馬特
+0

您可以使用腳本任務來搜索文件夾中的文件,然後對它們進行排序,然後將循環容器中排序的名稱傳遞給進程 –

回答

0

我們可以做到這一點使用腳本任務。

  1. 在腳本任務中使用c#或vb.net代碼來獲取目錄中存在的文件列表。
  2. 然後對它們進行排序,然後將排序後的數據存儲在對象變量中。
  3. 然後在For Each Loop容器中傳遞對象變量。
  4. 不,它會根據排序循環遍歷文件。

此外,我們可以在腳本中使用數組概念來實現它。

+0

我不是.net的人,我瞭解您的流程但不知道如何編碼。 –

0

這可以通過使用SSIS的腳本任務轉換來實現。

正如上面的用戶指出的,邏輯的關鍵是要通讀文件名,在一個集合中獲取日期時間部分和完整文件名,對集合進行排序,然後將其分配給一個對象變量。在Foreach循環轉換中使用此變量以按所需順序讀取文件。

我已經創建了一篇關於此的博客文章,其中包括博客文章中所需的邏輯 - Reading DateTime Stamped flat files其中有進一步的詳細說明。