如何將數據庫從SQL Server遷移到MySQL

一、遷移Database Schema。

首先使用Sybase Powerdesigner的逆向工程功能,逆向出SQL Server數據庫的物理模型。具體操作是在Powerdesigner中選擇“File”,“Reverse Engine”再選擇Database,將DBMS選擇爲SQL Server,如圖:

clip_image001[11]

然後選擇數據源,也就是要具體連接到的SQL Server數據庫服務器,然後選擇要逆向的數據庫名,比如選中“WSS_Content_80”如圖所示:

clip_image002[4]

單擊確定即可生成物理模型圖:

clip_image004[4]

然後單擊“Database”菜單下的Change Current DBMS修改當前的DBMS,改爲MySQL 5.0,

clip_image005[4]

單擊確定後即可生成MySQL的物理模型 然後單擊“Database”菜單下的“Generate Database”生成數據庫腳本文件。

接下來是手工修改下生成的腳本的內容。

將其中的dbo.全部替換成空

將create user這樣的語句刪除掉。

如果有些字符在MySQL中是關鍵字,那麼必須使用“`”(鍵盤上數字1左邊那個符合)符合框起來。

加上MySQL所需要的存儲引擎比如每個建表語句後跟上:

ENGINE = INNODB CHARACTER SET utf8 COLLATE utf8_general_ci;

將生成的腳本在MySQL中去運行一次即可創建數據庫。

二、遷移數據內容

數據內容只能通過生成INSERT語句的方式來做。

首先使用SSMS的“生成腳本”功能(在數據庫上右鍵,選擇“任務”“生成腳本”選項),可以爲SQL Server數據庫中的數據生成插入腳本。

首先選擇要遷移數據的表,這裏我們全選所有的表:

clip_image007[4]

然後單擊下一步,選擇將腳本保存到新的查詢窗口:

clip_image009[4]

單擊“高級”選項,在高級選項窗口中選擇“要編寫腳本的數據的類型”爲僅限數據:

clip_image010[4]

然後“確定”再下一步下一步即可生成INSERT腳本文件。

修改生成的腳本文件,主要有以下幾項修改:

使用批量替換的方式去掉[ ]這是SQL Server的符合,在MySQL中不用這個。

使用批量替換的方式去掉dbo.

有些單詞在MySQL中是關鍵字的,那麼需要使用“`”引起來。

關於Datetime類型的數據,需要手工修改下,SQL Server默認生成的是這樣的語句,在MySQL中是沒辦法解析的:

CAST(0x00009EEF00000000 AS DateTime)

爲每一行添加一個;表示一個插入語句結束。這個分號在SQL Server中可以不需要,但是在MySQL中是必須的。簡單的方法是使用高級的文本編輯器(比如Notepad++),將\r\n替換爲;\r\n即可。

發佈了224 篇原創文章 · 獲贊 5 · 訪問量 53萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章