在項(xiàng)目中遷移MS SQLServer到Mysql數(shù)據(jù)庫(kù)惶洲,實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)的快速整合

在開(kāi)發(fā)項(xiàng)目的時(shí)候,往往碰到的不同的需求情況铐料,兼容不同類(lèi)型的數(shù)據(jù)庫(kù)是我們項(xiàng)目以不變應(yīng)萬(wàn)變的舉措之一钠惩,在底層能夠兼容多種數(shù)據(jù)庫(kù)會(huì)使得我們開(kāi)發(fā)不同類(lèi)型的項(xiàng)目得心應(yīng)手,如果配合快速的框架支持坦刀,那更是錦上添花的舉措鲤遥。我開(kāi)發(fā)的項(xiàng)目或者框架盖奈,采用了微軟企業(yè)庫(kù)Enterprise Library的模塊拔第,傾向于支持多種數(shù)據(jù)庫(kù)蚊俺,也為我們開(kāi)發(fā)不同類(lèi)型的項(xiàng)目提供非常方便批钠、快速、統(tǒng)一的處理方式拷呆。一般常規(guī)的數(shù)據(jù)庫(kù)包括MS Server茬斧、Oracle、MySQL娄蔼、PostgreSQL、SQLite唉侄、DB2、國(guó)產(chǎn)達(dá)夢(mèng)等數(shù)據(jù)庫(kù)野建,本篇隨筆主要介紹如何實(shí)現(xiàn)從MS SQLServer到Mysql數(shù)據(jù)庫(kù),并為不同數(shù)據(jù)庫(kù)類(lèi)型添加實(shí)現(xiàn)底層的解決思路恬叹。

1候生、SQLServer數(shù)據(jù)庫(kù)導(dǎo)出到MySQL

如果我們已經(jīng)基于SQL Server進(jìn)行了開(kāi)發(fā),并且具有很多基礎(chǔ)的數(shù)據(jù)庫(kù)數(shù)據(jù)了绽昼,那么我們可以利用SQL Server導(dǎo)出到MySQL數(shù)據(jù)庫(kù)中唯鸭,這種是我們常見(jiàn)的一種開(kāi)發(fā)方式甥角,畢竟基于SQLServer數(shù)據(jù)庫(kù)開(kāi)發(fā)起來(lái)會(huì)比較快速一些禁添。

SQL Server數(shù)據(jù)庫(kù)的管理工具是SQL Server Management Studio拆火;而Mysql數(shù)據(jù)庫(kù)的管理工具則推薦使用Navicat绣檬,這是一款非常強(qiáng)大好用的管理工具镊讼。

首先我們使用Navicat建立自己一個(gè)空白的Mysql數(shù)據(jù)庫(kù)嚼松,用來(lái)承載SQL Server 的數(shù)據(jù)導(dǎo)出需要。

例如我們創(chuàng)建一個(gè)和SQL Server數(shù)據(jù)庫(kù)同名的MVCWebMisTest數(shù)據(jù)庫(kù),并且設(shè)置它的字符集為默認(rèn)或者UTF8的編碼方式痊土,如下所示搔耕。

image

然后利用SQL Server Management Studio進(jìn)行數(shù)據(jù)的直接導(dǎo)出腊凶,選擇【任務(wù)】【導(dǎo)出數(shù)據(jù)】政鼠,如下所示。

image

然后在彈出的數(shù)據(jù)庫(kù)里面選擇導(dǎo)入的數(shù)據(jù)源和目標(biāo)胖缤,選擇導(dǎo)入的數(shù)據(jù)源界面如下所示账月。

image

然后在目標(biāo)里面選擇Mysql的驅(qū)動(dòng)萄喳,填入相應(yīng)的信息,如下界面所示巡莹。

image

然后在下一步選擇需要導(dǎo)出的表信息岩睁。

image

很不幸,這種方式操作數(shù)據(jù)庫(kù)的導(dǎo)出操作沒(méi)有辦法成功猛蔽。

image

2毁枯、從Navicat中導(dǎo)入MS SQLServer數(shù)據(jù)庫(kù)數(shù)據(jù)

既然通過(guò)SQL Server Management Studio無(wú)法導(dǎo)入數(shù)據(jù)到Mysql數(shù)據(jù)庫(kù)中,那么我們嘗試下Mysql的數(shù)據(jù)庫(kù)管理工具Navicat祭示,它也有數(shù)據(jù)傳輸(導(dǎo)入導(dǎo)出)的功能。

我們?cè)趧偛沤ê玫臄?shù)據(jù)庫(kù)上面右鍵調(diào)出對(duì)應(yīng)的【數(shù)據(jù)傳輸】功能穷躁,然后設(shè)置好數(shù)據(jù)的源和目標(biāo),如下所示谷炸。

image

執(zhí)行數(shù)據(jù)傳輸操作北专,順利完成,非常強(qiáng)大和方便旬陡,而且沒(méi)有任何錯(cuò)誤拓颓。如下界面所示。

image

檢查數(shù)據(jù)庫(kù)導(dǎo)入的數(shù)據(jù)表和數(shù)據(jù)描孟,沒(méi)有問(wèn)題驶睦。

image

3、Mysql數(shù)據(jù)庫(kù)之間的傳遞

那么如果我們需要部署到服務(wù)器匿醒,就需要把當(dāng)前的Mysql數(shù)據(jù)庫(kù)傳遞(或者還原)到服務(wù)器的MySQL數(shù)據(jù)庫(kù)中场航,一般來(lái)講,我們利用Mysql的Navicat管理工具就可以實(shí)現(xiàn)數(shù)據(jù)導(dǎo)出的sql文件里面廉羔,然后在服務(wù)器里面使用反向操作即可還原數(shù)據(jù)庫(kù)成功的了溉痢。

image

轉(zhuǎn)儲(chǔ)SQL文件成功如下界面所示。

image

而在服務(wù)器的上面蜜另,我們可以利用Navicat的運(yùn)行SQL文件即可還原Mysql數(shù)據(jù)庫(kù)了适室。

image
image

運(yùn)行的結(jié)果如下所示。

image

當(dāng)然有時(shí)候也會(huì)發(fā)現(xiàn)存在一些表依賴(lài)引用的情況發(fā)生举瑰,不知道是不是Navicat版本出來(lái)的問(wèn)題捣辆,不過(guò)如果有這個(gè)問(wèn)題,只要不是編碼的問(wèn)題此迅,都好解決汽畴,打開(kāi)sql文件把創(chuàng)建表的順序調(diào)整一下就可以了旧巾,我就碰到過(guò)這種極端的情況,把一些依賴(lài)表調(diào)整到前面來(lái)就可以順利導(dǎo)入數(shù)據(jù)了忍些。

4鲁猩、底層的Mysql數(shù)據(jù)庫(kù)支持

底層支持多種數(shù)據(jù)庫(kù),對(duì)我們開(kāi)發(fā)不同類(lèi)型的項(xiàng)目有著非常重要的支撐作用罢坝,我們不知道客戶(hù)具體環(huán)境會(huì)選擇那種數(shù)據(jù)庫(kù)廓握,如果我們擴(kuò)展不同的數(shù)據(jù)庫(kù)非常方便和迅速,無(wú)疑會(huì)給我們提供很好的控制力和信心嘁酿。

image

采用了微軟企業(yè)庫(kù)Enterprise Library作為我們底層的數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)模塊后隙券,對(duì)于多種數(shù)據(jù)庫(kù)的訪(fǎng)問(wèn)操作,就會(huì)統(tǒng)一采用這個(gè)企業(yè)庫(kù)的數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)對(duì)象闹司,操作起來(lái)非常一致娱仔,為了對(duì)不同數(shù)據(jù)庫(kù)的常規(guī)增刪改查等一些操作進(jìn)行進(jìn)一步的封裝,已達(dá)到簡(jiǎn)化代碼的目的游桩,因此我們可以為每個(gè)不同的數(shù)據(jù)庫(kù)定義一個(gè)數(shù)據(jù)訪(fǎng)問(wèn)操作基類(lèi)牲迫,以便實(shí)現(xiàn)一些不同數(shù)據(jù)庫(kù)差異性的處理,但是它們還是有一個(gè)共同的數(shù)據(jù)訪(fǎng)問(wèn)基類(lèi)借卧。

采用不同的數(shù)據(jù)庫(kù)盹憎,我們需要為不同數(shù)據(jù)庫(kù)的訪(fǎng)問(wèn)層進(jìn)行生成處理,如為SQLServer數(shù)據(jù)的表生成相關(guān)的數(shù)據(jù)訪(fǎng)問(wèn)層DALSQL谓娃,里面放置各個(gè)表對(duì)象的內(nèi)容脚乡,不過(guò)由于采用了相關(guān)的繼承類(lèi)處理和基于數(shù)據(jù)庫(kù)的代碼生成,需要調(diào)整的代碼很少滨达。

image

我們?yōu)榱瞬煌臄?shù)據(jù)庫(kù)準(zhǔn)備了不同的數(shù)據(jù)庫(kù)實(shí)現(xiàn)奶稠,不過(guò)也僅僅是特殊的接口調(diào)用而已,一般常規(guī)的增刪改查以及分頁(yè)等普通接口捡遍,全部交由基類(lèi)接口實(shí)現(xiàn)即可锌订。

如對(duì)于權(quán)限管理系統(tǒng)這個(gè)常規(guī)框架基礎(chǔ)模塊,多數(shù)據(jù)庫(kù)的支持就非常必要的画株,它的數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)層如下所示辆飘。

image

不同的數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)層實(shí)現(xiàn)也是相差無(wú)幾的,一般可以利用代碼生成工具進(jìn)行快速生成后谓传,增加自定義接口實(shí)現(xiàn)即可蜈项。

image

而對(duì)于不同數(shù)據(jù)庫(kù)的支持,直接復(fù)制過(guò)去续挟,改動(dòng)一下數(shù)據(jù)庫(kù)實(shí)現(xiàn)層的命名空間和訪(fǎng)問(wèn)層的基類(lèi)就可以了紧卒,如果有自定義SQL腳本上的差異,可以適當(dāng)?shù)男薷募纯墒觥R话銖囊环N數(shù)據(jù)庫(kù)支持?jǐn)U展到另外一種數(shù)據(jù)庫(kù)支持跑芳,無(wú)非就是復(fù)制過(guò)去轴总,進(jìn)行調(diào)整一下即可,非常方便快速博个,這個(gè)就是整體框架支持的魅力和效率所在怀樟。

這樣整合多種數(shù)據(jù)庫(kù)支持的底層后,整個(gè)數(shù)據(jù)訪(fǎng)問(wèn)的架構(gòu)設(shè)計(jì)如下所示盆佣。

image

有了這些底層支持往堡,我們?cè)谂渲梦募x擇不同的數(shù)據(jù)庫(kù)的時(shí)候,選擇性的保留其中一種數(shù)據(jù)庫(kù)配置信息即可共耍。下面是各種數(shù)據(jù)庫(kù)支持的配置信息參考投蝉,一般保留一種即可。

image
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末征堪,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子关拒,更是在濱河造成了極大的恐慌佃蚜,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件着绊,死亡現(xiàn)場(chǎng)離奇詭異谐算,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)归露,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)洲脂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人剧包,你說(shuō)我怎么就攤上這事恐锦。” “怎么了疆液?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵一铅,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我堕油,道長(zhǎng)潘飘,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任掉缺,我火速辦了婚禮卜录,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘眶明。我一直安慰自己艰毒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布赘来。 她就那樣靜靜地躺著现喳,像睡著了一般凯傲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上嗦篱,一...
    開(kāi)封第一講書(shū)人閱讀 49,772評(píng)論 1 290
  • 那天冰单,我揣著相機(jī)與錄音,去河邊找鬼灸促。 笑死诫欠,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的浴栽。 我是一名探鬼主播荒叼,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼典鸡!你這毒婦竟也來(lái)了被廓?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤萝玷,失蹤者是張志新(化名)和其女友劉穎嫁乘,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體球碉,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蜓斧,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了睁冬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挎春。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖豆拨,靈堂內(nèi)的尸體忽然破棺而出直奋,到底是詐尸還是另有隱情,我是刑警寧澤施禾,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布帮碰,位于F島的核電站,受9級(jí)特大地震影響拾积,放射性物質(zhì)發(fā)生泄漏殉挽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一拓巧、第九天 我趴在偏房一處隱蔽的房頂上張望斯碌。 院中可真熱鬧,春花似錦肛度、人聲如沸傻唾。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)冠骄。三九已至伪煤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間凛辣,已是汗流浹背抱既。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留扁誓,地道東北人防泵。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蝗敢,于是被迫代替她去往敵國(guó)和親捷泞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容