Ssis

這是正常的 SSIS Foreach 循環容器行為嗎

  • January 12, 2016

我有一個循環遍歷文件夾中文件的 Foreach 循環容器。我以為循環容器只會查看文件 1 次,但顯然它會從頂部重新開始並拾取它已經再次看到的文件。

我的循環容器中有一個腳本,如果文件符合某些條件,它將處理該文件。如果沒有,那麼它將簡單地跳過該文件。

得到處理的文件被移動到另一個文件夾。我遇到的問題是,一旦它遍歷所有文件,它就會在文件列表的頂部重新開始,所以如果有一個文件被跳過並且沒有移出到不同的文件夾,它將無限期地繼續循環.

我知道我可以做到這一點,而不是跳過文件,我的過程將文件移動到另一個文件夾,以便 foreach 循環容器可以完成循環並且包可以完成,但我只是想我會先仔細檢查一下是否有讓循環容器循環遍歷文件一次的方式,這樣如果文件已經被辨識,循環容器就不會再次檢測到它。

根據評論的澄清,工作流程是

C:\SourceFolder\File1.csv -> C:\SourceFolder\Archive\File1.csv

ForEach 文件列舉器有一個Traverse Subfolder選項,它允許列舉器超越文件夾層次結構的頂層。

在此處輸入圖像描述

列舉器如何實現的具體機制是它將辨識文件夾中的所有元素。處理與 FileSpec 匹配的所有文件,*.csv在這種情況下,然後訪問應用相同模式的每個目錄。

您觀察到的是原始文件已被處理並正確移動到存檔位置。然後處理存檔位置,從而產生雙重處理的文件。

引用自:https://dba.stackexchange.com/questions/125934