一,只轉換資料庫(兩資料庫中表與資料都一樣只是由sqlserver轉換mysql)
想把Microsoft sql server 2008的資料匯入到mysql 5.5 ,過程並沒有想象的那麼簡單。
安裝環境:
Microsoft sql server 版本:2008
mysql 版本: 5.5
作業系統版本:windows7 64位
1、SQL Server Management Studio匯出的嚮導裡,在選擇匯出目的資料來源的時候沒有發現mysql的驅動,於是安裝mysql的ODBC 5.2.3:http://dev.mysql.com/downloads/connector/odbc/,因為我的作業系統是64版本,於是下載的版本也是64位的。安裝完畢,並在windows7的“控制台”—>”管理工具”—>”資料來源(ODBC)” 配置mysql 的使用者dsn和系統dsn 。
2、配置完dsn後,再次運行SQL Server Management Studio匯出的嚮導,但在選擇目的源的仍然沒有關mysql的odbc資料來源查資料有種說法是sql server 從 2005版本開始不再支援odbc的資料來源了,不過我沒查到官方的解釋。使用.NET Framework Data Provider for ODBC 方式報錯:未探索資料源名稱並且未指定預設的驅動程式,原因不明。
3、於是嘗試是不是可以通過mysql的用戶端Navicat for MySQL來匯入資料。開啟Navicat for MySQL,建立一個空庫,然後選擇“表”,右鍵選擇“匯入嚮導”,選擇匯入的資料格式為“odbc”,然後選擇資料來源“SQL server Native Client 10.0”,輸入資料庫伺服器ip地址、使用者名稱、密碼,選擇資料庫,串連成功後,選擇要匯入的表。我匯入後,檢查mysql資料後發現,去掉了主鍵屬性,需要手動添加。基本算是匯入成功了。
二、轉移資料
我使用了MySQL的Client的工具SQLyog,這個工具的安裝很簡單。安裝完成之後點擊需要匯入的目標資料庫,點擊右鍵【Import】->【Import Extenal Data】;
(Figure1:Import)
選擇【Start a new job】,點擊【下一步】;
(Figure2:Start a new job)
下面就是DSN的設定介面,如果你的下來列表中沒有需要匯出SQL Server資料庫的DSN,那麼需要通過【Create a New DSN】來建立一個新的DSN串連到SQL Sever;
(Figure3:Create a New DSN)
(Figure4:建立新資料來源)
(Figure5:選擇資料來源類型)
把上面的設定儲存為一個local.dsn檔案;
(Figure6:選擇資料來源儲存路徑)
(Figure7:選擇SQL Server伺服器)
(Figure8:設定SQL Server帳號和密碼)
(Figure9:選擇SQL Server資料庫)
(Figure10:測試資料來源)
(Figure11:測試成功)
選中【File DSN】,在瀏覽中選擇我們剛剛建立好的DSN,接著填寫登入到SQL Server的帳號和密碼;
(Figure12:選擇DSN)
下一步,選擇目標MySQL伺服器,填寫IP地址和帳號密碼,並且需要選擇目標資料庫;
(Figure13:設定MySQL帳號和密碼目標資料庫)
這一步類似SQL Server的匯入匯出功能,這裡可以拷貝一個表或者使用SQL指令碼過濾資料;
(Figure14:表拷貝)
上面的全部過程就是為建立SQL Server與MySQL的一個管道,接下來就是最為重要的設定SQL Server表與MySQL表之間的對應關係了;裡麵包括了SQL Server表欄位與MySQL表欄位之間的對應關係【Map】,進階選項【Advanced】,過濾【WHERE】。
(Figure15:選擇表對應關係)
下圖Figure16,資料來源【Source】,描述【Destination】,特別注意這裡資料類型【Type】,這裡的意思是轉換目標的資料類型,但是不需要跟目標表的一樣,因為這裡是做為一個臨時儲存的資料類型,類似FindOn在SQL Server中是datetime,這裡轉換為MySQL的timestamp,其實MySQL目標表的資料類型是datetime,這樣的設定也是可以轉換成功的。
(Figure16:表欄位轉換)
(Figure17:進階選項)
(Figure18:Error)
(Figure19:Log)
(Figure20:執行資訊)
(Figure21:執行結果)
(Figure22:原始SQL Server的資料列表)
(Figure23:轉移到MySQL的資料列表)
對比下Figure20與Figure21,發現我們資料已經全部轉移成功了;
二,資料結構與資料表都不相同,這個我這裡不寫方法了,大家使用程式直接轉換,在轉換時對於資料欄位類型中mysql與sqlserver有一個text類型需要進行強制轉換哦