如何將資料庫從SQL Server遷移到MySQL

來源:互聯網
上載者:User

一、遷移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即可。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.