【遷移】SqlServer 遷移到 MySQL 方法

lhrbest發表於2020-11-24

【遷移】SqlServer 遷移到 MySQL 方法

(一) 使用工具SQLyog、Navicat、MySQL Workbench或MSSQL2SQL

若是少量的表資料遷移,那麼可以使用SQLyog、Navicat、MySQL Workbench或MSSQL2SQL等工具直接進行遷移。

Navicate提供了資料傳輸的功能,可以作為中間操作節點,將一個資料庫複製到另一個庫。操作簡單,常規介面選擇要同步的庫和表,高階介面去掉建立索引、勾上遇到錯誤繼續、其他基本預設即可。完成後注意看日誌,如果有報錯沒有複製資料,請重新同步一下這些表,並在高階裡勾上使用完整插入語句,這樣我們在日誌裡,可以看到SQL語句,手動執行插入和除錯錯誤即可。有表沒同步,請手動建表。

 

MySQL Workbench提供了Migration Wizard(資料庫遷移)功能,具體操作過程可以參考: https://dev.mysql.com/doc/workbench/en/wb-migration-wizard-connection.html

 

對於SQL Server的儲存過程、函式和觸發器等物件,需要自己手工進行改寫,並充分測試才能進行遷移,否則遷移完成後會出現很多未知的問題。

 

一、原則:

只遷移表結構和資料,儲存過程、函式、觸發器儘量自己改寫,並充分測試。

遷移前,先設定好資料庫的一些引數,比如預設儲存引擎,預設編碼等,方便後續匯入。

 

二、方法:

1、使用MySQL Workbench

  MySQL Workbench提供了Migration Wizard(資料庫遷移)功能,支援MSSQL的資料形式轉換為MYSQL下的資料格式;

  具體參照這篇文章:http://mysqlworkbench.org/2012/07/migrating-from-ms-sql-server-to-mysql-using-workbench-migration-wizard/

  如果有Not enough memory to allocate insert buffer of size 1073741824,請行Google解決。 可能是MySQL端max_allowed_packet、key_buffer_size大小設定的問題。

  博主的解決辦法是,在windows機器新建一個MySQL資料庫,作為中間匯入庫。然後再在兩個MySQL庫間同步資料。

 

注意:

  1)看日誌檔案wb.log的報錯,複製結果以這個日誌為準。

  2)source RMBMS 連線引數,Server填開啟SSMS後,伺服器屬性後面那個名稱(常規-名稱)。


2、使用Navicat Premium -- 本人推薦

  Navicate 提供了資料傳輸的功能,可以作為中間操作節點,將一個資料庫複製到另一個庫。

  操作簡單,常規介面選擇要同步的庫和表,高階介面去掉建立索引、勾上遇到錯誤繼續、其他基本預設即可。

  完成後注意看日誌,如果有報錯沒有複製資料,請重新同步一下這些表,並在高階裡勾上使用完整插入語句,

  這樣我們在日誌裡,可以看到SQL語句,手動執行插入和除錯錯誤即可。有表沒同步,請手動建表。


三、後續操作:

  1、手動改寫儲存過程、函式和觸發器,並要經過程式充分測試檢驗。

  2、根據業務需求,新增合適的索引。

 

附:另外靠譜的兩種方法: https://www.percona.com/blog/2016/06/23/migrate-from-ms-sql-server-to-mysql/





開啟MySQL Workbench

Overview介面點選start…


連線源資料庫

 

紅框內是需要根據修改的地方,第三個紅框是自己資料庫伺服器的名字


 

目標選擇

目標是包含遷移資料的 MySQL 資料庫。選擇現有的 MySQL Workbench 連線,或從下拉選單中選擇 Manage Stored Connections 以建立新的 MySQL 連線。


點選next後經過一段讀條獲得

 


選擇需要轉移的資料庫


接下來就一直next就可以了

中途存在warning的介面不需要在意,跟著next就行,總體沒有問題:not found





如果我們已經基於SQL Server進行了開發,並且具有很多基礎的資料庫資料了,那麼我們可以利用SQL Server匯出到MySQL資料庫中,這種是我們常見的一種開發方式,畢竟基於SQLServer資料庫開發起來會比較快速一些。

SQL Server資料庫的管理工具是SQL Server Management Studio;而Mysql資料庫的管理工具則推薦使用Navicat,這是一款非常強大好用的管理工具。

首先我們使用Navicat建立自己一個空白的Mysql資料庫,用來承載SQL Server 的資料匯出需要。

例如我們建立一個和SQL Server資料庫同名的MVCWebMisTest資料庫,並且設定它的字符集為預設或者UTF8的編碼方式,如下所示。

然後利用SQL Server Management Studio進行資料的直接匯出,選擇【任務】【匯出資料】,如下所示。

 

然後在彈出的資料庫裡面選擇匯入的資料來源和目標,選擇匯入的資料來源介面如下所示。

然後在目標裡面選擇Mysql的驅動,填入相應的資訊,如下介面所示。

 

然後在下一步選擇需要匯出的表資訊。

 很不幸,這種方式運算元據庫的匯出操作沒有辦法成功。

 

2、從Navicat中匯入MS SQLServer資料庫資料

既然通過SQL Server Management Studio無法匯入資料到Mysql資料庫中,那麼我們嘗試下Mysql的資料庫管理工具Navicat,它也有資料傳輸(匯入匯出)的功能。

我們在剛才建好的資料庫上面右鍵調出對應的【資料傳輸】功能,然後設定好資料的源和目標,如下所示。

執行資料傳輸操作,順利完成,非常強大和方便,而且沒有任何錯誤。如下介面所示。

檢查資料庫匯入的資料表和資料,沒有問題。

3、Mysql資料庫之間的傳遞

那麼如果我們需要部署到伺服器,就需要把當前的Mysql資料庫傳遞(或者還原)到伺服器的MySQL資料庫中,一般來講,我們利用Mysql的Navicat管理工具就可以實現資料匯出的sql檔案裡面,然後在伺服器裡面使用反向操作即可還原資料庫成功的了。

 

轉儲SQL檔案成功如下介面所示。

而在伺服器的上面,我們可以利用Navicat的執行SQL檔案即可還原Mysql資料庫了。

執行的結果如下所示。

當然有時候也會發現存在一些表依賴引用的情況發生,不知道是不是Navicat版本出來的問題,不過如果有這個問題,只要不是編碼的問題,都好解決,開啟sql檔案把建立表的順序調整一下就可以了,我就碰到過這種極端的情況,把一些依賴表調整到前面來就可以順利匯入資料了。

4、底層的Mysql資料庫支援 

 底層支援多種資料庫,對我們開發不同型別的專案有著非常重要的支撐作用,我們不知道客戶具體環境會選擇那種資料庫,如果我們擴充套件不同的資料庫非常方便和迅速,無疑會給我們提供很好的控制力和信心。

採用了微軟企業庫Enterprise Library作為我們底層的資料庫訪問模組後,對於多種資料庫的訪問操作,就會統一採用這個企業庫的資料庫訪問物件,操作起來非常一致,為了對不同資料庫的常規增刪改查等一些操作進行進一步的封裝,已達到簡化程式碼的目的,因此我們可以為每個不同的資料庫定義一個資料訪問操作基類,以便實現一些不同資料庫差異性的處理,但是它們還是有一個共同的資料訪問基類。

 採用不同的資料庫,我們需要為不同資料庫的訪問層進行生成處理,如為SQLServer資料的表生成相關的資料訪問層DALSQL,裡面放置各個表物件的內容,不過由於採用了相關的繼承類處理和基於資料庫的程式碼生成,需要調整的程式碼很少。

我們為了不同的資料庫準備了不同的資料庫實現,不過也僅僅是特殊的介面呼叫而已,一般常規的增刪改查以及分頁等普通介面,全部交由基類介面實現即可。

如對於許可權管理系統這個常規框架基礎模組,多資料庫的支援就非常必要的,它的資料庫訪問層如下所示。

不同的資料庫訪問層實現也是相差無幾的,一般可以利用程式碼生成工具進行快速生成後,增加自定義介面實現即可。

而對於不同資料庫的支援,直接複製過去,改動一下資料庫實現層的名稱空間和訪問層的基類就可以了,如果有自定義SQL指令碼上的差異,可以適當的修改即可。一般從一種資料庫支援擴充套件到另外一種資料庫支援,無非就是複製過去,進行調整一下即可,非常方便快速,這個就是整體框架支援的魅力和效率所在。

這樣整合多種資料庫支援的底層後,整個資料訪問的架構設計如下所示。

有了這些底層支援,我們在配置檔案選擇不同的資料庫的時候,選擇性的保留其中一種資料庫配置資訊即可。下面是各種資料庫支援的配置資訊參考,一般保留一種即可。



使用sqlyog將sql server 遷移到mysql 


  • 使用軟體工具sqlyog(64位)

使用sqlyog將SQL Server資料遷移至MySQL

sqlyog

  • 遷移步驟

1、使用sqlyog連線目標 資料庫

使用sqlyog將SQL Server資料遷移至MySQL

連線目標資料庫

2、選擇目標資料庫(需要先把表結構建好,從SQL Server同步表結構也可以使用工具,很早以前導的表結構,忘了用的什麼工具)

使用sqlyog將SQL Server資料遷移至MySQL

選擇資料庫

3、選中資料庫後點選工具欄【高階工具】——》【匯入外部資料...】,選擇【開始新工作】點選下一步

使用sqlyog將SQL Server資料遷移至MySQL

4、選擇【任何ODBC資料來源】,選擇【檔案DSN】,點選【建立新的DSN...】

使用sqlyog將SQL Server資料遷移至MySQL

5、選擇【檔案資料來源(與機器無關)】,點選下一步

使用sqlyog將SQL Server資料遷移至MySQL

6、選擇【sql server】,點選下一步

使用sqlyog將SQL Server資料遷移至MySQL

7、儲存DSN檔案至任意位置,我這裡儲存至桌面,檔名為test,點選【下一步】【完成】

使用sqlyog將SQL Server資料遷移至MySQL

8、描述任意輸入,輸入sql server資料庫地址,點選【下一步】

使用sqlyog將SQL Server資料遷移至MySQL

9、輸入連線資訊,點選【下一步】

使用sqlyog將SQL Server資料遷移至MySQL

10、選擇源資料庫,點選【下一步】

使用sqlyog將SQL Server資料遷移至MySQL

11、資料來源 測試

使用sqlyog將SQL Server資料遷移至MySQL

12、回到選擇資料來源頁面,選擇剛剛建立的dsn檔案,輸入資料來源憑據(sql server使用者名稱密碼),點選【下一步】

使用sqlyog將SQL Server資料遷移至MySQL

13、輸入 MySQL資料庫憑據,選擇資料庫為目標資料庫,點選【下一步】

使用sqlyog將SQL Server資料遷移至MySQL

14、選擇【從資料來源拷貝表】,點選【下一步】

使用sqlyog將SQL Server資料遷移至MySQL

15、選擇SQL Server庫中需要遷移資料的表

使用sqlyog將SQL Server資料遷移至MySQL

16、狂點下一步,等待完成

使用sqlyog將SQL Server資料遷移至MySQL

  • 結論:在本地PC機上實驗,從遠端SQL Server資料庫匯入總記錄數約130W條資料到本地 mysql資料庫,總耗時1714秒。對比源資料庫與目標資料庫的資料,沒有發現異常及錯誤資料,對時間數字等處理都沒有問題。






【1】MSSQL2SQL

SQL Server轉換為MySQL工具,用了一下 感覺蠻不錯的。

下載地址: https://www.jb51.net/softs/209207.html#downintro2

分享上來,同時也以便記錄下來以後自用。

工具名稱:Mss2sql

來個操作流程:

下載後開啟壓縮包

 

 

執行mss2sql

 

 

預設就是Move to MysQL server directly,選擇下一步

 

 

繼續下一步,稍等片刻

 

 

這次是需要連線到MySQL server了,我是本地,所以選擇了Local,填寫上你的使用者名稱和密碼

 

 

繼續等待連線

 

 

選擇在MS SQL裡面需要轉換的資料庫

 

 

點下一步,如果mysql裡面有同名的資料庫,會讓你來選擇轉換的方式,分別是

Overwrite the entire database:覆蓋整個資料庫Overwrite existing tables only:只覆蓋存在的表Skip existing tables:跳過存在的表Merge:合併

 

 

我的mysql裡面的只是一張空資料庫,所以選了第一項,整個覆蓋.

 

 

選擇需要轉換的表,新增到轉換列表中,我是需要全部的表,所以選擇了Add all

 

 

然後就是一段時間的等待

 

 

這個表裡面的資料並不多,花費時間稍長,大概有10分鐘,如果表大的話,可能用程式來轉換會快一些,有方便的辦法也請告之為謝

 

 

下面就是轉換成功後的表格了,裡面的資料OK,中文也沒有什麼問題.

 






About Me

........................................................................................................................

● 本文作者:小麥苗,部分內容整理自網路,若有侵權請聯絡小麥苗刪除

● 本文在個人微 信公眾號( DB寶)上有同步更新

● QQ群號: 230161599 、618766405,微信群私聊

● 個人QQ號(646634621),微 訊號(db_bao),註明新增緣由

● 於 2020年11月完成

● 最新修改時間:2020年11月

● 版權所有,歡迎分享本文,轉載請保留出處

........................................................................................................................

小麥苗的微店https://weidian.com/s/793741433?wfr=c&ifr=shopdetail

● 小麥苗出版的資料庫類叢書: http://blog.itpub.net/26736162/viewspace-2142121/

小麥苗OCP、OCM、高可用、MySQL、DBA學習班http://blog.itpub.net/26736162/viewspace-2148098/

● 資料庫筆試面試題庫及解答: http://blog.itpub.net/26736162/viewspace-2134706/

........................................................................................................................

請掃描下面的二維碼來關注小麥苗的微 信公眾號( DB寶)及QQ群(230161599、618766405)、新增小麥苗微 信(db_bao), 學習最實用的資料庫技術。

........................................................................................................................

 

 



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2736464/,如需轉載,請註明出處,否則將追究法律責任。

相關文章