下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、不同數(shù)據(jù)庫間數(shù)據(jù)的遷移通常是件麻煩事,特別是如今移動應(yīng)用和移動商務(wù)普及的今天。針對此需求,在此簡要介紹DDlUtil在不同數(shù)據(jù)庫間遷移數(shù)據(jù)的使用方法和過程.做為Apacher軟件聯(lián)盟旗下數(shù)據(jù)庫項目的一個子項目,DdlUtil是一個小巧的,與數(shù)據(jù)庫描述文件一起使用的組件. 利用DdlUtils提供的功能,程序員可以方便的在不同的數(shù)據(jù)庫之間實現(xiàn)數(shù)據(jù)的遷移.而不用考慮底層數(shù)據(jù)庫實現(xiàn)的細節(jié)差異.在此數(shù)據(jù)庫描述文件通常是一些XML文件,他們分別包含了數(shù)據(jù)庫的定義文件及實際數(shù)據(jù)文件. 得益于DdlUtils良好的設(shè)計,在實際應(yīng)用中,只需相因?qū)胩囟〝?shù)據(jù)庫的數(shù)據(jù)庫驅(qū)動,既可獲得DdlUtils的支持。如果要
2、獲取更多的信息,DdlUtil的官網(wǎng)是 . 下面以一個實際例子說明DdlUtils的使用過程,DerbyMySQLDdlUtilsDdlUtilsN1在此為了敘述方便我們簡化數(shù)據(jù)庫的內(nèi)容僅包含一張名為customer的表,其中id字段為其主鍵,不允許重復(fù)插入.MySQL數(shù)據(jù)庫可以代表移動應(yīng)用中的數(shù)據(jù)中心,負責(zé)匯集許多不同的分布數(shù)據(jù)庫Derby中的數(shù)據(jù). Derby代表移動應(yīng)用中的一個獨立客戶端,他和MySQL數(shù)據(jù)中心擁有共享數(shù)據(jù)的同時,也有自己獨有的數(shù)據(jù),需要上傳保存. MySQL數(shù)據(jù)庫初始內(nèi)容與Derby內(nèi)容初始內(nèi)容如下,在此id值為4的數(shù)據(jù)趙七為需要同步的數(shù)據(jù). 下面讓我們開始具體操作.第
3、一步:構(gòu)件環(huán)境,導(dǎo)入相應(yīng)依賴驅(qū)動包為了確定數(shù)據(jù)庫的具體位置DdlUtils需要借助外部數(shù)據(jù)源模塊,在此推薦Apacher軟件聯(lián)盟下的另一個常用項目DBCP (Database Connection Pooling,數(shù)據(jù)庫連接池).截至本文其最新版本為 .可在獲取更多信息.此外程序還需要導(dǎo)入MySQL和Derby的對應(yīng)數(shù)據(jù)庫驅(qū)動jar包到工程路徑,在此不做具體論述.讀者可根據(jù)具體情況導(dǎo)入.第二步:利用DdlUtils導(dǎo)出數(shù)據(jù)庫定義文件和數(shù)據(jù)庫數(shù)據(jù)文件.DerbyDdlUtils過程主要代碼如下/利用DBCP提供的BasicDataSource指定數(shù)據(jù)源位置BasicDataSource data
4、Source_Derby = new BasicDataSource();dataSource_Derby.setDriverClassName("org.apache.derby.jdbc.ClientDriver");dataSource_Derby.setUrl("jdbc:derby:/:1527/e:anttestMyDbTest");/獲取數(shù)據(jù)庫平臺和模型Platform platform_Derby = PlatformFactory.createNewPlatformInstance(dataSource_Derby);
5、Database database_Derby= platform_Derby.readModelFromDatabase("MyDbTest");/導(dǎo)出數(shù)據(jù)庫描述的定義文件new DatabaseIO().write(database_Derby, "C:DatabasedbXML.txt");/導(dǎo)出數(shù)據(jù)庫的數(shù)據(jù)文件FileOutputStream fos=new FileOutputStream("C:DatabasedumpFile.txt");DataWriter dw=new DataWriter(fos);new Data
6、baseDataIO().writeDataToXML(platform_Derby, database_Derby,dw);以上代碼展示了如何利用DdlUtils導(dǎo)出數(shù)據(jù)庫的定義文件和數(shù)據(jù)庫數(shù)據(jù)文件.程序?qū)С龅臄?shù)據(jù)庫的定義文件dbXML.txt的內(nèi)容如下所示。他包含了數(shù)據(jù)庫表格的詳細描述<?xml version="1.0"?><!DOCTYPE database SYSTEM "/torque/dtd/database"> <database name="MyDbTest&
7、quot;> <table name="CUSTOMER"> <column name="ID" primaryKey="true" required="true" type="INTEGER" size="10" autoIncrement="false"/> <column name="NAME" primaryKey="false" required="false&
8、quot; type="VARCHAR" size="20" autoIncrement="false"/> </table> </database>程序?qū)С龅臄?shù)據(jù)庫數(shù)據(jù)文件dumpFile.txt內(nèi)容如下所示。他包含了具體的數(shù)據(jù)信息.<?xml version='1.0' encoding='UTF-8'?><data><CUSTOMER ID="1" NAME="張三" /> <CUSTO
9、MER ID="2" NAME="李四" /> <CUSTOMER ID="3" NAME="王五" /> <CUSTOMER ID="4" NAME="趙七" /></data>從上述文件可以看到,DdlUtils用統(tǒng)一的模式把數(shù)據(jù)庫和其中的對象統(tǒng)一抽取成DdlUtils認可的模式。在此我們的導(dǎo)出文件為XML文件,作為信息的載體,XML獨立于各種不同的數(shù)據(jù)庫平臺。有關(guān)XML文件格式限定的schema,和Ddlutils對不同數(shù)據(jù)類型
10、的轉(zhuǎn)換,大家可在獲取詳細的解釋下面對剛才程序中設(shè)計的類做簡要說明Platform:在此platform是一個接口,他封裝了與數(shù)據(jù)庫相關(guān)的查詢,維護等平臺的功能,其真正的執(zhí)行類是我門在創(chuàng)建數(shù)據(jù)源時對應(yīng)制定的數(shù)據(jù)庫驅(qū)動。:代表了一個數(shù)據(jù)庫的具體模型,包含了具體表格的定義等(注意Database包含的不是數(shù)據(jù)庫的實際數(shù)據(jù)文件,而是數(shù)據(jù)庫的定義描述).利用DatabaseIO就可以把內(nèi)存中的Database Model輸出成數(shù)據(jù)庫定義XML文件.:提供了從XML文件讀取數(shù)據(jù)庫模型文件,和寫數(shù)據(jù)庫模型到XML文件的功能。第三步:利用DdlUtils導(dǎo)入數(shù)據(jù)庫定義文件和數(shù)據(jù)庫數(shù)據(jù)文件到MySQL數(shù)據(jù)中心.
11、MySQLDdlUtils過程主要代碼如下/從外部的XML文件獲取數(shù)據(jù)庫模型Database database_Derby =new DatabaseIO().read("C:DatabasedbXML.txt");/定義mysql數(shù)據(jù)源BasicDataSource dataSource_MySQL = new BasicDataSource();dataSource_MySQL.setDriverClassName("com.mysql.jdbc.Driver");dataSource_MySQL.setUsername("root&quo
12、t;);dataSource_MySQL.setPassword("mysql");dataSource_MySQL.setUrl("jdbc:mysql:/localhost:3309/test");/獲取MySQL的數(shù)據(jù)庫平臺Platform platform_MySQL = PlatformFactory.createNewPlatformInstance(dataSource_MySQL);platform_MySQL.createTables(database_Derby, false, true);/獲取外部數(shù)據(jù)庫數(shù)據(jù)文件File dump=
13、new File("C:DatabasedumpFile.txt");/構(gòu)造一個InputStream輸入流數(shù)組,根據(jù)實際需要可以添加多個FileInputStream fio=new FileInputStream(dump);InputStream infi=new InputStream1; infi0=fio;DatabaseDataIO databasedataIO=new DatabaseDataIO();/設(shè)定導(dǎo)入不啟批量導(dǎo)入databasedataIO.setUseBatchMode(false);/設(shè)定遇到重復(fù)數(shù)據(jù)時直接忽略錯誤databasedataIO.setFailOnError(false);/數(shù)據(jù)導(dǎo)入databasedataIO.writeDataToDatabase(platform_MySQL,database_Derby, infi);程序執(zhí)行后MySQL數(shù)據(jù)庫結(jié)果如圖成功插入了id為4值為趙七的紀(jì)錄.在以上程序中,借助第二步中所得的數(shù)據(jù)庫描述文件和數(shù)據(jù)庫定義文件,將Derby數(shù)據(jù)庫中的數(shù)據(jù),遷移到了MyS
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年質(zhì)量管理與監(jiān)督操作手冊
- 兒童游樂場所安全管理規(guī)范(標(biāo)準(zhǔn)版)
- 會議風(fēng)險評估與應(yīng)對措施制度
- 公共交通線路優(yōu)化調(diào)整制度
- 2026年浙江舟山群島新區(qū)六橫管理委員會招聘備考題庫及參考答案詳解一套
- 中意寧波生態(tài)園控股集團有限公司2025年第三次公開招聘備考題庫及完整答案詳解一套
- 2026年某央企數(shù)據(jù)庫運維招聘備考題庫附答案詳解
- 養(yǎng)老院入住老人福利待遇保障制度
- 安全認知培訓(xùn)課件
- 養(yǎng)老院入住老人法律權(quán)益保護制度
- 鐵道運輸服務(wù)專業(yè)教學(xué)標(biāo)準(zhǔn)(中等職業(yè)教育)2025修訂
- 關(guān)于腦卒中試題及答案
- 2025年江蘇省蘇州市初三(上)英語期末陽光調(diào)研測卷含答案
- 2024年湖南財經(jīng)工業(yè)職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性測試題庫附答案
- T-CNAS 04-2019 住院患者身體約束護理
- XXXXXX工程施工合同執(zhí)行情況說明
- 全國行政區(qū)域身份證代碼表(電子表格版)
- 2024年廣東省公務(wù)員《申論(省市級)》試題真題及答案
- 腎內(nèi)一科一品一特色護理
- 挖機租賃合同模板大全
- 2024愛德華EDWARDS消防報警系統(tǒng)產(chǎn)品技術(shù)手冊
評論
0/150
提交評論