SQLServer數據庫轉換成MySQL數據庫


由於工作需要,系統原先的SQLServer數據庫要轉換成MYSQL數據庫,所以這兩天就一直在查閱這方面的資料。最開始,我嘗試從SQLServer中導出SQL文件,然后導入到MYSQL數據庫中,發現報錯,大概意思就是類型不對。后來發現一篇博文,感覺靠譜,一步一步實施下去發現導入是成功了,但是有問題,下面我先將博文內容呈現(轉載自:http://www.cnblogs.com/gaizai/p/3237907.html

 

一、背景

由於項目開始時候使用的數據庫是SQL Server,后來把存儲的數據庫調整為MySQL,所以需要把SQL Server的數據轉移到MySQL;由於涉及的表比較多,所以想在MySQL中生成對應表並導入數據;

上網找了些資料,如:將ACCESS和MSSQL導入MYSQL中MySQL Migration 實現 MSSQL 到 MySQL數據遷移,雖然不知道里面的做法是否可以成功轉移,但是里面的過程比較復雜,沒有去嘗試,后來自己找到了方法,最重要就是簡單和准確(暫時沒發現明顯的BUG),這里分享給大家。

二、轉移數據

我使用了MySQL的Client的工具SQLyog,這個工具的安裝很簡單。安裝完成之后點擊需要導入的目標數據庫,點擊右鍵【Import】->【Import Extenal Data】;

clip_image002

(Figure1:Import)

選擇【Start a new job】,點擊【下一步】;

clip_image003

(Figure2:Start a new job)

下面就是DSN的設置界面,如果你的下來列表中沒有需要導出SQL Server數據庫的DSN,那么需要通過【Create a New DSN】來創建一個新的DSN連接到SQL Sever;

clip_image004

(Figure3:Create a New DSN)

clip_image005

(Figure4:創建新數據源)

clip_image006

(Figure5:選擇數據源類型)

把上面的設置保存為一個local.dsn文件;

clip_image007

(Figure6:選擇數據源保存路徑)

clip_image008

(Figure7:選擇SQL Server服務器)

clip_image009

(Figure8:設置SQL Server帳號和密碼)

clip_image010

(Figure9:選擇SQL Server數據庫)

clip_image011

(Figure10:測試數據源)

clip_image012

(Figure11:測試成功)

選中【File DSN】,在瀏覽中選擇我們剛剛創建好的DSN,接着填寫登錄到SQL Server的帳號和密碼;

clip_image013

(Figure12:選擇DSN)

下一步,選擇目標MySQL服務器,填寫IP地址和帳號密碼,並且需要選擇目標數據庫;

clip_image014

(Figure13:設置MySQL帳號和密碼目標數據庫)

這一步類似SQL Server的導入導出功能,這里可以拷貝一個表或者使用SQL腳本過濾數據;

clip_image015

(Figure14:表拷貝)

上面的全部過程就是為創建SQL Server與MySQL的一個管道,接下來就是最為重要的設置SQL Server表與MySQL表之間的對應關系了;里面包括了SQL Server表字段與MySQL表字段之間的對應關系【Map】,高級選項【Advanced】,過濾【WHERE】。

clip_image016

(Figure15:選擇表對應關系)

下圖Figure16,數據源【Source】,描述【Destination】,特別注意這里數據類型【Type】,這里的意思是轉換目標的數據類型,但是不需要跟目標表的一樣,因為這里是做為一個臨時存儲的數據類型,類似FindOn在SQL Server中是datetime,這里轉換為MySQL的timestamp,其實MySQL目標表的數據類型是datetime,這樣的設置也是可以轉換成功的。

clip_image018

(Figure16:表字段轉換)

clip_image019

(Figure17:高級選項)

clip_image020

(Figure18:Error)

clip_image021

(Figure19:Log)

clip_image022

(Figure20:執行信息)

clip_image023

(Figure21:執行結果)

clip_image024

(Figure22:原始SQL Server的數據列表)

clip_image025

(Figure23:轉移到MySQL的數據列表)

對比下Figure20與Figure21,發現我們數據已經全部轉移成功了;

 

以上是“聽風吹雨”的博文。參照這個博文,我這邊出現兩個問題,一個是導入的數據表遠遠超過實際的表;第二個是有些數據表沒有導入成功。在仔細閱讀sqlLog出錯日志文件(自己選的Log file的目錄下),發現有個別數據表字段類型不對,導致導入不成功,基本上是datetime字段類型,博文中提到說(特別注意這里數據類型【Type】,這里的意思是轉換目標的數據類型,但是不需要跟目標表的一樣,因為這里是做為一個臨時存儲的數據類型,類似FindOn在SQL Server中是datetime,這里轉換為MySQL的timestamp,其實MySQL目標表的數據類型是datetime,這樣的設置也是可以轉換成功的),但是我這里轉換不成功,而后我就將所有timestamp類型的都手動改成了datetime類型。導入成功,第二個問題解決。

至於第一個問題,我發現,導入的那些表全是原先SQLServer數據庫中的視圖。所以在再次導入的時候,我只選擇了自己需要的數據庫表,切記全選要慎重。

(謹以此記錄下,以備以后查找。我的SQLServer數據庫版本為SQLServer2005,mysql服務器版本為5.5)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM