2011-10-13 189 views
1

我使用SSIS讀取輸入中的.txt文件,並在其上執行我的業務邏輯將輸出結果保存在名稱與當前inpout文件相同的文件中(文件名動態存儲在一個變量中)。SSIS檢索foreach循環內的當前文件夾遍歷子文件夾

當所有的文件都存儲在同一個文件夾,我沒有問題,訪問他們,因爲我用下面的表達式,爲在數據流中的平面文件的連接字符串:"path" + @[User::inputFileName] + ".txt"

現在我要處理的文件夾與子文件夾(我在foreach循環中設置遍歷子文件夾),我有一些與平面文件連接字符串的問題,因爲我不能使用通配符,如:my path\\subfolder*" + @[User::inputFileName] + ".txt"其中每個子文件夾具有相同的名稱,只更改名稱的最後部分。

如何將當前子文件夾名保存在變量中,以便我可以按以下方式使用它?"path\\"+ @[User::currentSubFolder] +"\\" + @[User::inputFileName] + ".txt"

回答

1

我能解決我的問題,因此我在這裏寫下我的解決方案,以防其他人處於相同的情況。

我在我的foreach循環之前使用了一個腳本轉換塊。從它我可以檢索當前的完整路徑(以後在平面文件連接字符串中使用)以及不帶擴展名的輸入文件名作爲包含SSIS腳本結果的輸出文件名。

爲了保持興趣的價值,我使用了兩個變量:一個用於文件名,一個用於路徑。

這裏的腳本代碼:

Public Sub Main() 

    'Variable Index 0 => FileName 
    'Variable Index 1 => filePath 

    Dim fullPath As String = Dts.Variables.Item(1).Value.ToString 
    Dim fileName As String = Path.GetFileName(fullPath) 
    fileName = fileName.Substring(0, fileName.Length - 4) 

    Dts.Variables.Item(0).Value = fileName 
    Dim x As String = Dts.Variables.Item(0).Value.ToString 

    Dts.TaskResult = Dts.Results.Success 
End Sub 
相關問題