標籤:繼承 功能 而在 運行 定義 之間 下界 studio 匯入
在開發項目的時候,往往碰到的不同的需求情況,相容不同類型的資料庫是我們項目以不變應萬變的舉措之一,在底層能夠相容多種資料庫會使得我們開發不同類型的項目得心應手,如果配合快速的架構支援,那更是錦上添花的舉措。我開發的項目或者架構,採用了微軟企業庫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資料庫的快速整合