2016-06-09 66 views
0

我已經創建了從文件夾導入Excel文件的SSIS包。 Excel文件的名稱根據月份而改變。 例如:I:\ Test \ User_09-05-2016.xlsx或 I:\ Test \ User_09-06-2016.xlsx等.....SSIS包中的源文件名更改

我想創建SQL作業來運行包,因爲我每個月都會得到一個新文件。 我想在成功執行包後保存excel文件(一次只保留一個文件夾中的excel文件)。

我該如何自動化過程?

回答

0

只需在SSIS中使用ForEach容器即可。

導入該文件夾中的每個電子表格。

處理後刪除(或移動)每個電子表格。

+0

如果源文件名從I:\ Test \ User_09-05-2016.xlsx更改爲I:\ Test \ User_09-06-2016.xlsx – Apoorv

+0

如何處理源文件名只需在SSIS中使用ForEach容器即可。 – BIDeveloper

0

FE循環的替代方法 - 在程序包運行時定義Excel文件的路徑和文件名。
如果您知道命名Excel文件的規則,請創建一個字符串變量Excel_FilePath包含完整路徑並使用表達式,如[User::Folder Path]+"\\"+[User::Filename]+".xlsx"。然後把你的Excel文件連接管理器添加到ConnectionString屬性"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + @[User::Excel_FilePath] + ";Extended Properties=\"Excel 8.0;HDR=YES\";"
以下表達式在包屬性 - 設置DelayValidation = true
更多details on this approach with screenshotsexactly your question reviewed

+0

感謝您的重播......我已經完成了您提供的屏幕截圖。但我不想從多個文件中提取數據。我需要從單個Excel文件中獲取每個月有不同文件名(日期)的數據。 – Apoorv

+0

文章作者想處理多個文件。在你的情況下 - 不要使用循環並按照描述創建ConnectionManager字符串。另一種方法 - 創建您的包,處理單個Excel文件,並在您從SQL Job調用此包時傳遞調整後的* ConnectionString *。但在這種情況下,您必須在SQL Job中動態創建連接字符串,這可能會非常棘手。 – Ferdipux