摘要:[SSIS]動態變更匯入檔案的檔名,一般檔案來源
轉拋資料時,如果來源檔案的檔案是一小時存一個檔案,用時間為檔名要怎麼使用SSIS匯入資料
其實也可以寫一個SQL工作交由SSIS來執行,但感覺若只寫SQL如果發生沒有檔案時這種錯誤發生可以無法處理,因此把每個步驟分開來寫
分開來寫包含刪除暫存檔,載入txt資料,整合到歷史資料,分為三步驟,其種載入txt檔為以下主要詳細記錄的方向
1. 建立指令碼+變數+資料流程工作
指令碼工作 -- 可以用程式C#去變更變數的值
變數 -- 暫存現在要匯入的檔案名稱
資料流程工作 -- 一般檔案來源使用變數的路徑
資料工作流程,先拉好一般檔案來源
一般檔案來原先設定一個預設有檔案的來源即可
2. 指令碼工作
剛要新增遇到問題,要重新灌才能解決,遇到Visual Studio Tool Application找不到問題,
新增指令碼工作更新變數,
編輯指令碼內容:
public void Main()
{
// TODO: Add your code here
String Path_new = String.Format(@"\\10.100.64.200\ges_log\Door{0}{1}50.txt",System.DateTime.Now.ToString("yyyyMMdd"),System.DateTime.Now.AddHours(-1).ToString("hh"));
Dts.Variables["User::sourcefile"].Value = Path_new;
Dts.TaskResult = (int)ScriptResults.Success;
}
要測試指令碼工作是否能夠變更變數,需要For設定中段點
按下執行後,在偵錯裡找到區域變數視窗,
在區域變數裡可以找到自己設定的變數,按下F5會執行下一步
變數由0->1,用區域變數偵錯可以看到指令碼程式編輯結果
3. 資料流程工作
一般檔案來源,把設定一般檔案來源的Connection String 與設定的變數綁定,在一般檔案來源的Expression裡加入Connection String屬性,
並設定值為@變數
動態匯入資料方參考 :
http://www.dotblogs.com.tw/yangxinde/archive/2010/11/09/19307.aspx
For迴圈的測試 :
http://www.dotblogs.com.tw/yangxinde/archive/2010/11/22/19606.aspx
參考以上內容自己實做一次所以記錄一下