2013-09-30 20 views
2

我有一個SSIS包,它從特定目錄加載csv文件,使用表達式和通配符來拾取所有文件。SSIS排除Foreach Loop容器中的某些文件

目前,該容器的FileSpec查找具有以下格式的文件:

fileName_environment_ *

,這是工作的罰款。第二組的文件,現在兵從同一目錄加載,並區分這些,文件格式爲:

fileName_environment_business_ *

所以,第二SSIS包拿起只有新文件因爲這些文件的結構將如下所示:

filename_environment_abc 
filename_environment_def 
filename_environment_xyz 
filename_environment_business_abc 
filename_environment_business_def 
filename_environment_business_xyz 

但第一個軟件包將處理所有文件。

所以,問題是,我可以設置第一SSIS包的FileSpec忽略這些都是格式文件:

fileName_environment_business_ *

+0

您是否必須按指定的順序運行它們?在我看來,首先運行最小/最具體的範圍的包似乎是最好的做法。但是如果你依賴其他文件的數據,這是不可行的。 –

+0

@Nighty_軟件包不會刪除文件 - 它們只是讀取數據。所以,按照一定的順序運行並沒有什麼區別。 – christiandev

+0

啊哈。所以沒有對已讀取的文件進行歸檔?這可以通過文件系統任務輕鬆實現。然後,您不必多次閱讀同一文件(除非您想要ofc),並通過首先運行「業務」包,您將得到你想要的。我不知道你被允許/不允許做什麼,但這可能是完成它的一個好方法。 –

回答

5

在foreach循環容器放一個虛擬Script task之前,你已經有了第一個塊。連接這兩個帶線,並設置Constraint Options來表達,在其中您應該定義一個FINDSTRING功能:

FINDSTRING(@var, "business", 1) == 0 

如果@var是循環迭代。

只有沒有「業務」的文件纔會進入下一步。希望這是你想要的。

+0

謝謝,我也考慮過一個腳本任務,但只是想看看是否有其他想法。在決定方法之前,我會等待看看是否有其他解決方案。 – christiandev

相關問題