2009-11-16 132 views
0

我想知道如何通過SSIS將.mdb(MS Office 07)文件導入Sql server 2008。我需要以這種方式運行這個ETL數據包,以便檢查重複項,並且如果有的話不重新插入它們,但只插入新的記錄。 如果有人有一個教程鏈接或可以解釋這裏的步驟將是非常有益ssis sql server 2008 for access .mdb數據庫

回答

0

這有點廣泛在這樣一個論壇來討論,但是......

一般來說,我通過導入數據做到這一點到一張工作表(而不是你想要的數據)。它還應該有它自己的標識列(用於分隔數據中的重複項)和數據庫表記錄標識的列。希望數據對每條記錄都有一些類型的id字段。如果是這樣,那麼你應該有一個映射表,它將數據庫中的數據庫id與Access數據庫中的記錄id鏈接起來。然後,查找映射表中不存在的id並將與它們相關聯的記錄插入到要放入信息的生產表中變得非常簡單。通常,當我這樣做時,我將自己的id字段添加到工作表中,然後將這些記錄插入映射表中作爲最後一步。

如果您收到的數據中沒有id字段,則根據自然鍵的性質或者即使您擁有一個(Access數據庫往往因不遵循數據庫設計原則而經常出現臭名昭着) 。如果最接近的東西是唯一標識符是姓名/地址組合,那麼您如何知道伊利諾伊州伊利諾伊州州街10號的約翰史密斯是否與伊利諾伊州25 Main Street Chicalgo的約翰史密斯同一人。他本可以移動,或者它可能是一個不同的約翰史密斯。

2

擴展在HLGEM的答案...

  1. 在SSIS中創建一個新的數據庫流對象並進入該部分(在上面第二個選項卡)。

  2. 創建一個OLE DB Source對象(可能是Access的特定版本,但基本的OLE DB Source應該可以)並選擇Access作爲源並找到.mdb文件。沒有真正描述它應該找到列,你可以格式化一小段,以跳過標題行等。

  3. 接下來,通過將其拖動到屏幕上並將綠色箭頭連接到來源。打開目標組件並選擇創建一個新的數據庫。它應該自動創建列名並根據.mdb數據庫分配它們的類型。在本節中,您可以指定您希望鍵入哪些列,以表示您想要的唯一行。如果你沒有任何領域可走,你將不得不探索其他選擇(見HLGEM的文章)。如果你有一個領域,你可以鍵入,這樣做。

  4. 既然已經創建了這個,您可以指定如何在OLE DB目標上處理您的錯誤輸出......如果您選擇重定向並將數據推送到文件,所有重複的鍵都將被拋出那裏。

希望這個小結有助於!