一、遷移Database
Schema。
首先使用Sybase
Powerdesigner的逆向工程功能,逆向出SQL
Server資料庫的物理模型。具體操作是在Powerdesigner中選擇「File」,「Reverse
Engine」再選擇Database,將DBMS選擇為SQL
Server
然後選擇數據源,也就是要具體連接到的SQL
Server資料庫伺服器,然後選擇要逆向的資料庫名,比如選中「WSS_Content_80」
單擊確定即可生成物理模型圖,然後單擊「Database」菜單下的Change
Current
DBMS修改當前的DBMS,改為MySQL
5.0,單擊確定後即可生成MySQL的物理模型
然後單擊「Database」菜單下的「Generate
Database」生成資料庫腳本文件。
接下來手工修改下生成的腳本的內容。將其中的dbo.全部替換成空,將create
user這樣的語句刪除掉。
如果有些字元在MySQL中是關鍵字,那麼必須使用「`」(鍵盤上數字1左邊那個符合)符合框起來。
加上MySQL所需要的存儲引擎比如每個建表語句後跟上:
ENGINE = INNODB CHARACTER SET utf8 COLLATE utf8_general_ci;
將生成的腳本在MySQL中去運行一次即可創建資料庫。
二、遷移數據內容
數據內容只能通過生成INSERT語句的方式來做。
首先使用SSMS的「生成腳本」功能(在資料庫上右鍵,選擇「任務」「生成腳本」選項),可以為SQL
Server資料庫中的數據生成插入腳本。
首先選擇要遷移數據的表,這里我們全選所有的表
然後單擊下一步,選擇將腳本保存到新的查詢窗口
單擊「高級」選項,在高級選項窗口中選擇「要編寫腳本的數據的類型」為僅限數據
然後「確定」再下一步下一步即可生成INSERT腳本文件。
修改生成的腳本文件,主要有以下幾項修改:
使用批量替換的方式去掉[
]這是SQL
Server的符合,在MySQL中不用這個。
使用批量替換的方式去掉dbo.
有些單詞在MySQL中是關鍵字的,那麼需要使用「`」引起來。
關於Datetime類型的數據,需要手工修改下,SQL
Server默認生成的是這樣的語句,在MySQL中是沒辦法解析的:
CAST(0x00009EEF00000000
AS
DateTime)
為每一行添加一個;表示一個插入語句結束。這個分號在SQL
Server中可以不需要,但是在MySQL中是必須的。簡單的方法是使用高級的文本編輯器(比如Notepad++),將\r\n替換為;\r\n即可。
㈡ 如何將資料庫從SQL Server遷移到MySQL
以下有幾款遷移工具的對比,可以參考,比較推薦DB2DB.
軟體易用性主要是指軟體在導入前的配置是否容易。由於很多軟體設計是面向程序員而非一般的資料庫管理人員、甚至是普通的應用程序實施人員,而這一類人員很多時候並沒有數據源配置經驗。因為一些使用 ODBC 或者 ADO 進行配置的程序往往會讓這類用戶造成困擾(主要是不知道應該選擇什麼類型的資料庫驅動程序)。下面讓我們看看四個工具的設計界面:
>>>>
1、SQLyog
SQLyog使用的是古老的 ODBC 連接,但對於新一代的程序來說,這種方式的非常的不熟悉並且不容易使用,並且必須要求本機安裝好相應的資料庫的 ODBC 驅動程序(SQL Server 一般自帶好)。
>>>>
2、NavicatPremium
NavicatPremium是四個應用工具中設計最不人性化的一個:從上圖怎麼也想像不到要點按那個小按鈕來添加一個新的連接,並且這個連接設置不會保存,每次導入時都必須重新設置。NavicatPremium使用的是比 ODBC 稍先進的 ADO 設置方式(199X年代的產物),但使用上依然是針對老一代的程序員。
>>>>
3、Mss2sql
Mss2sql是最容易在網路上搜索出來的工具,原因之一是它出現的時間較早。
DB2DB同樣遷移 300萬數據時,僅僅使用了 2 分 44 秒,這個速度相當驚人。不過最後的結果出現一個 BUG,就是提示了轉換成功,但後面的進度條卻沒有走完(在後面的數據完整性評測中,我們驗證了數據其實是已經全部處理完畢了)。