[SSIS]動態變更匯入檔案的檔名,由一般檔案來源匯入資料

摘要:[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

參考以上內容自己實做一次所以記錄一下