2012-03-07 45 views
0

我需要將數據從一個MS SQL數據庫移動到另一個MS SQL數據庫。但是,該目標數據庫有點不同。例如,一個表具有相同的行,但具有不同的數據類型等等。從我讀到的內容來看,它看起來像是SSIS,但是,工具箱中的流程和組件如何用於上述示例?我擔心的是我可能不得不爲每個表創建一個數據流源或類似的東西。無論如何,更省時的選擇是什麼?移動數據庫表,進行一些轉換 - SSIS

謝謝!

+0

爲什麼要爲每個表/對象創建數據流關注你? – billinkc 2012-03-07 16:20:17

+0

也許我把這個錯誤的方式......並不是它牽涉到我,但是如果我的大多數表格在源DB和目標DB上具有相同的定義,那麼自動將這些映射爲有點是很好的。我正在考慮在這裏繪製50張表格,這是需要花費的時間。所以我試圖在這裏找到兩件事:是否有一種簡單的方法來映射這些相等的表,以及轉換不相等的表的過程是什麼。謝謝。 – 2012-03-07 16:26:38

+0

這樣做更有意義。這是一次性過程還是需要多次運行?預期的數據量是多少? – billinkc 2012-03-07 16:47:24

回答

3

鑑於它是一次性任務並且數據量很低,我使用導入/導出嚮導來生成移動所有這些表的基礎知識。您可以右鍵單擊SSMS,任務,導出...中的數據庫,或者直接從命令行/開始 - >運行DTSWizard.exe運行

無論哪種方式,您都會有一個嚮導來引導您的屏幕。他們大多是不言自明的,但從來沒有阻止我評論。

前2個屏幕定義來源和目的地。 「SQL Server Native Client 10.0」的默認值都是正確的,只需定義源和目標服務器名稱以及數據庫/目錄。

第3個屏幕接受來自一個或多個表或視圖的默認Copoy數據。

第4個屏幕允許您選擇源表並且目標的默認值將是相同的表和模式。如果任何表具有標識列,您需要單擊「編輯映射...」按鈕並選中「啓用標識插入」選項。這需要按照表格完成。

第5屏很重要。由於您需要在數據進入目標表之前操作數據,請取消選中立即運行(除非您感到幸運)並選中Save SSIS Package。保存到文件系統,將軟件包保護級別更改爲「不保存敏感數據」

第6個屏幕詢問軟件包應保存在哪裏以及應該調用什麼。我將它命名爲so_Araujo並將其保存到c:\ sandbox \ ssishackandslash \ ssishackandslash \ so_Araujo.dtsx您稱之爲何處並不重要,只需記下它在哪裏。

單擊完成並查看操作。如果有「錯誤插入只讀列」類型的錯誤,請注意這些錯誤最有可能是遺漏了身份插入。

打開Visual Studio,創建一個SQL Server Integration Services類型的新項目(在商業智能部分下),然後右鍵單擊該項目(我的名爲SSISHackAndSlash)並選擇Add,New Item ...選擇包在第6個屏幕上創建並雙擊打開它。

導入/導出嚮導會將許多不相關的源目標放在一個數據流中。由於這是一次性的,所以我不會太在乎GUI的增加和所有表格的連接速度。

現在將數據類型強制轉換爲正確的類型以及您需要完成的任何其他功能。您將查看Derived Columns TransformationsData Conversion Transformations的組合,然後重新映射目標表中的列。如果你有特殊問題,請唱歌。我可能已經完成了一些SSIS;)

另一種解決方案是使用EzAPI編寫大部分數據移動的腳本,然後手動編輯需要按摩的20%。

+0

非常奇妙,感謝您的詳細解答! – 2012-03-07 17:59:42