2011-09-19 39 views
0

我已創建了一個SSIS包需要.csv文件數據,並插入到SQL表,動態製作平面文件連接 - 想要使用SSIS在文件夾中獲取最新文件?

但現在我想最近添加的文件,該文件夾中假設

我的平面文件連接路徑是:C:\Temp

現在氣溫有我的文件命名爲MYDATA 2011-09-08.csv

現在一些文件有喜歡MYDATA 2011-09-15.csvMYDATA 2011-09-17.csv

現在MYDATA 2011-09-17.csv是最近的日期,我想拾取這個文件我該如何做到這一點?

回答

1

我會用foreach循環和腳本任務結合來完成這個任務。

  • 首先,你應該聲明3個變量:

Variables

  • 下一步是添加foreach循環容器的封裝,它內部的腳本組件。

enter image description here

  • 集foreach循環容器性質如下。

enter image description here

enter image description here

  • 設置變量,腳本組件訪問

enter image description here

  • 在腳本組件中解析文件名中的日期,檢查它是否大於最近日期(User::RecentDate),並且是否將它保存到User::RecentFileName變量。

    string strDatePart = Path.GetFileNameWithoutExtension(
        Dts.Variables["User::FileName"].Value.ToString()).Substring(7); 
    DateTime dateTime = DateTime.MinValue; 
    if (DateTime.TryParse(strDatePart, out dateTime)) 
    { 
        if (dateTime > (DateTime)Dts.Variables["User::RecentDate"].Value) 
        { 
         Dts.Variables["User::RecentDate"].Value = dateTime; 
         Dts.Variables["User::RecentFileName"].Value =   
          Dts.Variables["User::FileName"].Value; 
        } 
    
        Dts.TaskResult = (int)ScriptResults.Success; 
    } 
    else 
        Dts.TaskResult = (int)ScriptResults.Failure; 
    

當然,你想這只是一個例子,你可以改變這個腳本。循環結束後,User::RecentFileName將包含您想要的結果。

相關問題