2015-01-09 121 views
0

我有一個SSIS包,它從目錄中拾取一個文件並將其導入到數據庫中,非常簡單。唯一的問題是輸入文件是基於當前日期命名的,例如\ path \ to \ file \ filename_010115.txt,其中010115是2015年1月1日。帶有XML配置,動態文件位置的SSIS包源碼

我用一個自定義bat文件將平面文件源的連接管理器設置爲當前日期格式的文件名並直接將其傳遞到dtexec.exe;然而,我們的環境要求我們使用XML配置文件而不是bat文件。有沒有簡單的方法來設置XML文件源「前綴」,並追加日期格式的文件名,然後再嘗試拿起文件?

回答

0

您是否考慮重新構建您的方法?您無法通過配置(無論是XML,表格,環境還是註冊表鍵)來優雅地完成此操作。在最簡單的情況下,一個表,甚至可以啓動您的SSIS包之前,一個進程需要更新該表以使用當前日期。像SQL Agent這樣的調度工具可以運行SQL命令。如果你正在使用XML路由,你正在尋找一個小小的應用程序或者PowerShell命令來修改你的配置文件。同樣,每天都要修改文件,並且在SSIS包開始之前修改文件,因爲它一開始就設置了一次值,並且從不再次諮詢配置源。

可以使用SSIS表達式使用當前日期作爲您的平面文件源的連接字符串的一部分,但在你需要處理超過一天的文件或重新處理昨天的文件時,你駝峯和要麼手動重命名源文件或更改系統時鐘,沒有人會這樣做。

更規範的方法是使用Foreach(文件)循環容器。將其指向源文件夾並查找與您的模式相匹配的所有文件。我假設你將處理過的文件移出相同的文件夾。 Foreach Container找到所有匹配的文件,並通過彈出當前文件的列表枚舉出您選擇的任何變量。

查看

+0

工作的例子,我沒有任何的你建議的使用情況,但有我張貼的限制...我沒有使用解決問題自定義變量和SSIS中的表達式在我問完問題後不久。我不是一個SQL開發人員,也不太熟悉SSIS包開發(我來這裏尋找一些方向來學習一個新工具),但我設法找到了表達式的功能,並使其工作。 – Rob 2015-01-11 00:45:49