【遷移】SqlServer 遷移到 MySQL 方法
【遷移】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/
如果我們已經基於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位)
-
遷移步驟
1、使用sqlyog連線目標 資料庫
2、選擇目標資料庫(需要先把表結構建好,從SQL Server同步表結構也可以使用工具,很早以前導的表結構,忘了用的什麼工具)
3、選中資料庫後點選工具欄【高階工具】——》【匯入外部資料...】,選擇【開始新工作】點選下一步
4、選擇【任何ODBC資料來源】,選擇【檔案DSN】,點選【建立新的DSN...】
5、選擇【檔案資料來源(與機器無關)】,點選下一步
6、選擇【sql server】,點選下一步
7、儲存DSN檔案至任意位置,我這裡儲存至桌面,檔名為test,點選【下一步】【完成】
8、描述任意輸入,輸入sql server資料庫地址,點選【下一步】
9、輸入連線資訊,點選【下一步】
10、選擇源資料庫,點選【下一步】
11、資料來源 測試
12、回到選擇資料來源頁面,選擇剛剛建立的dsn檔案,輸入資料來源憑據(sql server使用者名稱密碼),點選【下一步】
13、輸入 MySQL資料庫憑據,選擇資料庫為目標資料庫,點選【下一步】
14、選擇【從資料來源拷貝表】,點選【下一步】
15、選擇SQL Server庫中需要遷移資料的表
16、狂點下一步,等待完成
-
結論:在本地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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 達夢遷移工具之MySQL資料庫遷移到達夢MySql資料庫
- Mysql資料遷移方法MySql
- 記一次MySQL資料遷移到SQLServer全過程MySqlServer
- 遷移sqlserver資料到MongoDbSQLServerMongoDB
- centos遷移到rocky linux方法CentOSLinux
- MySQL資料庫遷移到PostgresMySql資料庫
- 乾貨好文 | 初探MySQL遷移到ClickHouseMySql
- DBMotion——MySQL遷移利器MySql
- svn 遷移到gitGit
- 容器化|自建 MySQL 叢集遷移到 KubernetesMySql
- 從Firebase+Redis遷移到PlanetScale+MySQLRedisMySql
- mysql 備份與遷移 資料同步方法MySql
- MySQL分割槽如何遷移MySql
- 透過MySQL Workbench 將 SQL Server 遷移到GreatSQLMySqlServer
- MySQL5.17異機遷移到MySQL 5.7.23基本步驟MySql
- WSL遷移到其他磁碟
- Mysql百萬級資料遷移,怎麼遷移?實戰過沒?MySql
- 將ZooKeeper遷移到Kubernetes的新方法 - hubspot
- linux mysql資料庫遷移LinuxMySql資料庫
- mysql檔案複製遷移MySql
- mysql 大表mysqldump遷移方案MySql
- 遷移MySQL 5.7資料庫MySql資料庫
- MySQL備份遷移之mydumperMySql
- MySQL 5.5使用者遷移到5.7使用者MySql
- Datax助力輕鬆遷移SQLServer資料至GreatSQLSQLServer
- 遷移學習系列---基於例項方法的遷移學習遷移學習
- 從 Nginx 遷移到 Envoy ProxyNginx
- 從 golang flag 遷移到 cmdrGolang
- 將nodejs遷移到D盤NodeJS
- Python 決定遷移到 GitHubPythonGithub
- 如何將 CentOS遷移到 AlmaLinux?CentOSLinux
- uniapp小程式遷移到TSAPP
- 從單體遷移到微服務的十二種方法微服務
- mysqldump從mysql遷移資料到OceanBaseMySql
- MySQL資料遷移那些事兒MySql
- win10遷移系統到固態硬碟 win10系統遷移到ssd教程Win10硬碟
- 伺服器資料遷移的方法-硬體不同如何遷移資料伺服器
- 5. ActiveMQ平滑遷移到kafkaMQKafka