1. 程式人生 > >在專案中遷移MS SQLServer到Mysql資料庫,實現MySQL資料庫的快速整合

在專案中遷移MS SQLServer到Mysql資料庫,實現MySQL資料庫的快速整合

在開發專案的時候,往往碰到的不同的需求情況,相容不同型別的資料庫是我們專案以不變應萬變的舉措之一,在底層能夠相容多種資料庫會使得我們開發不同型別的專案得心應手,如果配合快速的框架支援,那更是錦上添花的舉措。我開發的專案或者框架,採用了微軟企業庫Enterprise Library的模組,傾向於支援多種資料庫,也為我們開發不同型別的專案提供非常方便、快速、統一的處理方式。一般常規的資料庫包括MS Server、Oracle、MySQL、PostgreSQL、SQLite、DB2、國產達夢等資料庫,本篇隨筆主要介紹如何實現從MS SQLServer到Mysql資料庫,併為不同資料庫型別新增實現底層的解決思路。

1、SQLServer資料庫匯出到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指令碼上的差異,可以適當的修改即可。一般從一種資料庫支援擴充套件到另外一種資料庫支援,無非就是複製過去,進行調整一下即可,非常方便快速,這個就是整體框架支援的魅力和效率所在。

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

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

相關推薦

專案遷移MS SQLServer到Mysql資料庫實現MySQL資料庫快速整合

在開發專案的時候,往往碰到的不同的需求情況,相容不同型別的資料庫是我們專案以不變應萬變的舉措之一,在底層能夠相容多種資料庫會使得我們開發不同型別的專案得心應手,如果配合快速的框架支援,那更是錦上添花的舉措。我開發的專案或者框架,採用了微軟企業庫Enterprise Library的模組,傾向於支援多種資料庫,

資料庫定時備份原理實現MySQL資料庫的實時備份

www.syncnavigator.cn SyncNavigator 做資料同步時所支援的資料庫型別: 支援sqlserver 2000-2014所有版本,全相容,和MYsql 4.x 、MYsql 5.x 、MYsql 6.x版本。 來源資料庫和目標資料庫可以版本不同,比如:來源資料庫

IDEA java連線mysql資料庫實現資料庫的增刪改查

先上程式碼: package Database_Demo; import java.sql.*; public class DataBase { public static void main(String[] args) { Connect

使用DBUtils第三方工具類實現MySQL資料庫的增刪改查

DBUtuls第三方工具類 使用到的有: 1.ResultSetHandler介面 結果集處理介面 2.QueryRunner類 完成資料庫的增/刪/改/查 3.DbUtils類 定義關閉資源與事物處理方法 1.自定義JDBC工具類

windows下配置mycat實現mysql資料庫的讀寫分離!

下載Windows的安裝包 配置環境變數: 修改配置檔案 wrapper.conf Server.xml <?xmlversion=

在項目遷移MS SQLServer到Mysql數據庫實現MySQL數據庫的快速整合

mage 操作 info 支持 文件選擇 需要 並且 在服務器 重要 在開發項目的時候,往往碰到的不同的需求情況,兼容不同類型的數據庫是我們項目以不變應萬變的舉措之一,在底層能夠兼容多種數據庫會使得我們開發不同類型的項目得心應手,如果配合快速的框架支持,那更是錦上添花的舉措

solr連線資料庫實現資料定時同步(個人專案經驗)

在專案開發過程中為了提高查詢效率和降低資料庫的壓力,因此此時就將查詢量大的資料放到solr中,查詢從solr中執行,不走資料庫,但是資料庫資料修改後怎麼辦呢,此時就要實現solr連線資料庫,實現資料的定時同步,保證資料的一致性。 solr的搭建看我另一篇部落格吧http:/

【無私分享:ASP.NET CORE 專案實戰(第十三章)】Asp.net Core 使用MyCat分散式資料庫實現讀寫分離

目錄索引 簡介   MyCat2.0版本很快就釋出了,關於MyCat的動態和一些問題,大家可以加一下MyCat的官方QQ群:106088787。我們今天主要介紹一下,在我們的Asp.net Core中如何使用Mycat,這源於一個大神(Amamiya Yuuko)的分享,但是,這中

向scrapy的spider傳參實現增量

爬蟲 scrapy有時候需要根據項目的實際需求向spider傳遞參數來控制spider的運行方式。比如說,1.根據用戶提交的url來控制spider爬取的網站。2.根據需求增量爬取數據。今天就寫一個增量(augmenter)的方式:1.首先在spider裏添加註:在網上也看了不少的博客,最後發現*args,

Linux6.5配置PXE自動裝機實現批量裝機服務。

linu type 大量 oss 9.png tex 技術 批量裝機 watermark 為了增加工作效率,我們在進行linux裝機時,在面臨大量裸機的情況下, PXE自動裝機的作用尤為顯著,能夠大大減少我們工作壓力,增加工作效率。 安裝環境:linux6.5一臺,w

MySQL、SQL server 、Oracle資料庫查詢所有的資料庫查詢指定資料庫所有表名查詢所有的欄位的名字

MySQL中查詢所有資料庫名和表名 1.查詢所有資料庫 show databases; 2.查詢指定資料庫中所有表名 select table_name from information_schema.tables where table_schema='database_name' a

python操作資料庫實現使用者名稱、密碼登入資料庫首次登入自行設定密碼並返回工資表明細。

python操作資料庫,實現使用者名稱、密碼登入資料庫,首次登入自行設定密碼,並返回工資表明細。 1 #!/usr/bin/env python3 2 # -*- coding: utf-8 -*- 3 4 # 匯入依賴包 5 import psycopg2 6 7 print("營

使用Docker實現MySql資料庫在容器的主從配置(詳解)

使用Docker容器搭建MySql主從複製 關於如何建立映象,我的部落格中有詳細的步驟文件 檢視容器ip命令為docker inspect 96fd[id前四位] Master_mysql_ip_172.17.0.4 slave_mysql_ip_172.17.0.5 1.docker上面尋

React NativeNavigator的基本使用實現簡單的頁面之間的跳轉和頁面資料傳遞

效果如下:很簡單的例子,大佬勿噴啊...           點選檢視多少錢後,自動跳轉到超市頁面,點選回答價格後,自動跳轉回顧客介面,並傳遞引數回去。   在我使用的0.57.0的版本中,Navigator已被移除,

JavaWeb企業級專案接入順豐官方API實現物流實時查詢(親測有效)

由於現在順豐與快遞100鬧掰了,所以使用快遞一百已經查不到順豐的物流資訊了,包括快遞鳥等,現在想要在專案中實現順豐快遞的物流查詢只能用順豐官方API來查詢,然而這個官方的API並沒有快遞一百那些介面那麼容易,需要很複雜的一套流程,並且順豐用的返回形式都是XML檔案,就需要設計到XML檔案的修改與

Git學習第(四)篇:Clone專案到另一臺電腦實現專案共享

經過前面三篇文章的學習和實踐,已經完成了git本地庫的建立,與GitHub的程式碼關聯、編輯器的外掛安裝等工作,接下來就可以開始寫程式碼了。 第一篇文章中,我提到過我需要兩臺電腦共享專案程式碼,進行程式碼的更新和版本控制,因此我需要GitHub幫我實現這個需求,同時也為了通過實踐來掌握git和G

javaIterable介面的使用實現一個單鏈表的迭代器

單鏈表實現: public class MyLinkedList <T>{ private static class Entry<E>{ private E value; private Entry next;

servlet入門:前端操作結合資料庫實現資料庫部門表單資料增改功能

第一個完整的web probject,值得記錄下來的一點心得; 還是老規矩,不囉嗦,直接上程式碼; 第一部分:建立一個web project ,匯入jar包,配置檔案等; 配置檔案部分: <?xml version="1.0" encoding="UTF

在Java專案如何使用log4j和slf4j實現日誌列印(轉)

https://blog.csdn.net/xiao_mengxi/article/details/54910450 用maven管理,只需要匯入一個包就行 <dependency> <groupId>org.slf4j</gr

#使用JDBC訪問資料庫實現web與資料庫的通訊

//驅動程式名 String driverName = "com.mysql.jdbc.Driver"; //資料庫使用者名稱 String userName = "root"; //密碼 String userPasswd = "1