2015-04-25 21 views
1

您好我想創建一個將excel文件加載到客戶數據庫的SSIS包。SSIS與源和目標的動態連接。

我有100個客戶的數據庫,我也有evrey新的一週100 excel文件 (所有的數據庫和文件具有相同的結構)數據庫的名稱是CustomerName和Excel文件名是CustomerName_date。

我想創建每週運行一次的作業,使用ssis packge將文件夾中的所有excel文件加載到客戶數據庫,並將文件傳輸到存檔文件夾。

什麼是最好的爲什麼動態連接到源和目標。

+0

爲什麼你有100個不同的客戶數據庫?只是好奇 –

+0

每個客戶有我自己的數據庫在我的服務器與不同的Proc和視圖和鍵。 –

回答

0

該任務可以使用變量和表達式來完成。 最困難的部分將是爲OLE DB連接創建工作連接字符串。

1)要處理文件夾中的每個文件,請使用Foreach循環。

  • 在循環編輯窗口中收藏選項卡,選擇「Foreach文件枚舉」
  • 使用wildcart選擇您的文件夾中,篩選出Excel文件(如果需要),並選擇完全合格的名稱
  • 創建用於存儲文件路徑的變量並在選項卡變量映射選擇此變量。 (在每個循環中,新的文件路徑將被保存在這個變量中)。

2)創建基於您的Excel文件中的一個新Excel文件連接,右鍵單擊它,並在表達式中,創建表達式的連接字符串。在表達式編輯器中,將其設置爲使用yout文件變量。

3)然後我們將需要創建連接字符串爲OLE DB連接。

  • 創建新的變量來使它成爲holt。
  • 創建OLE DB連接並將其連接到任何數據庫。
  • 然後右鍵單擊您的連接並在其他位置備份連接字符串,以便將來可以使用它。

4)在foreach循環中,創建腳本任務。

  • 腳本任務編輯器,選擇ReadOnlyVariables(文件名)和ReadWriteVariables(您準備連接字符串)
  • 點擊編輯腳本和新的VisualStudio窗口,創建自己的腳本。
  • 變量可以讀取和寫入這樣的:

    串myvalue的=(字符串)Dts.Variables [ 「用戶::」]。值;

  • 您可以從fileName變量中解析excel名稱,併爲OLE DB創建新的連接字符串以匹配先前保存的連接字符串。

5)編輯您的OLE DB連接表達式並將連接字符串匹配到變量。

6)在foreach循環中,創建數據流任務並雙擊它。使用Excel來源並使其使用Excel連接。然後創建OLE DB目標並使其使用您的OLE DB連接。


使用此答案作爲一個建議,也許它會需要soma玩,然後才能工作。但根據我的經驗,這種方法應該可行。