2012-11-02 89 views
-4

有人可以展示如何使用SSIS中的腳本任務枚舉給定文件夾中的文件?使用SSIS腳本枚舉文件夾中的文件任務

+0

它不是重複的 - 我想通過腳本任務來做到這一點,而不是通過枚舉For循環,然後處理文件。 –

+0

腳本任務中有一個很好的枚舉用例。我們使用這種方法首先枚舉文件,然後根據來自數據庫的已處理文件列表檢查此列表。這樣我們就不需要爲每個文件啓動一個單獨的SQL任務。節省的時間使得這是一個非常有效的請求。 – milivojeviCH

回答

1

配置兩個變量:只讀字符串User::download_path和讀寫對象User::files_to_process接收文件列表。

public void Main() 
{ 
    bool fireAgain = true; 

    var filesToProcess = new System.Collections.ArrayList(); 
    var filesInDirectory = new System.Collections.ArrayList(); 

    var download_path = (String)Dts.Variables["User::download_path"].Value; 

    // Find for example all csv files in the directory which are having size > 0 
    var downloadedFiles = new DirectoryInfo(download_path).EnumerateFiles("*.csv",SearchOption.TopDirectoryOnly); 
    foreach (var f in downloadedFiles) 
    { 
     if (f.Length > 0) 
      filesInDirectory.Add(f.FullName); 
    } 

    Dts.Events.FireInformation(3, "Getting files in directory", downloadedFiles.Count().ToString() + " found.", "", 0, ref fireAgain); 

    // Report the file names into the SSIS Log: 
    foreach (var f in filesToProcess) 
    { 
     Dts.Events.FireInformation(3, f.ToString(), "Ready for processing", "", 0, ref fireAgain); 
    } 

    // Return them into the READWRITE object variable 
    Dts.Variables["User::files_to_process"].Value = filesInDirectory; 

    Dts.TaskResult = (int)ScriptResults.Success; 
} 
+0

設置如何查看? – Si8

+0

哪個設置?在SSIS中,這只是一個腳本任務。 – milivojeviCH

+0

我試圖添加腳本任務,但它保持失敗,所以我直接去了連接管理器的表達式,並添加了一個現在工作正常的表達式。謝謝。 – Si8

相關問題