全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
不同数据库间数据的迁移通常是件麻烦事,特别是如今移动应用和移动商务普及的今天。针对此需求,在此简要介绍 DDlUtil 在不同数据库间迁移数据的使用方法和过程.做为 Apacher 软件联盟旗下数据库项目的一个子项目,DdlUtil 是一个小巧的,与数据库描述文件一起使用的组件. 利用 DdlUtils 提供的功能,程序员可以方便的在不同的数据库之间实现数据的迁移.而不用考虑底层数据库实现的细节差异.在此数据库描述文件通常是一些XML 文件,他们分别包含了数据库的定义文件及实际数据文件. 得益于 DdlUtils 良好的设计,在实际应用中,只需相因导入特定数据库的数据库驱动,既可获得 DdlUtils 的支持。如果要获取更多的信息,DdlUtil 的官网是 /ddlutils/ . 下面以一个实际例子说明 DdlUtils 的使用过程,Derby MySQLDdlUtils DdlUtilsN 1在此为了叙述方便我们简化数据库的内容仅包含一张名为 customer 的表,其中 id 字段为其主键,不允许重复插入.MySQL 数据库可以代表移动应用中的数据中心,负责汇集许多不同的分布数据库 Derby 中的数据Derby 代表移动应用中的一个独立客户端,他和 MySQL 数据中心拥有共享数据的同时,也有自己独有的数据,需要上传保存. MySQL 数据库初始内容与 Derby 内容初始内容如下,在此id 值为 4 的数据赵七为需要同步的数据 .下面让我们开始具体操作.第一步:构件环境,导入相应依赖驱动包为了确定数据库的具体位置 DdlUtils 需要借助外部数据源模块 ,在此推荐 Apacher 软件联盟下的另一个常用项目 DBCP (Database Connection Pooling,数据库连接池).截至本文其最新版本为 commons-dbcp-1.4-bin.zip .可在 /dbcp 获取更多信息.此外程序还需要导入 MySQL 和 Derby 的对应数据库驱动 jar 包到工程路径,在此不做具体论述.读者可根据具体情况导入.第二步:利用 DdlUtils 导出数据库定义文件和数据库数据文件.Derby DdlUtils过程主要代码如下/利用 DBCP 提供的 BasicDataSource 指定数据源位置BasicDataSource dataSource_Derby = new BasicDataSource();dataSource_Derby.setDriverClassName(“org.apache.derby.jdbc.ClientDriver“);dataSource_Derby.setUrl(“jdbc:derby:/:1527/e:anttestMyDbTest“);/获取数据库平台和模型Platform platform_Derby = PlatformFactory.createNewPlatformInstance(dataSource_Derby);Database database_Derby= platform_Derby.readModelFromDatabase(“MyDbTest“);/导出数据库描述的定义文件new DatabaseIO().write(database_Derby, “C:DatabasedbXML.txt“);/导出数据库的数据文件FileOutputStream fos=new FileOutputStream(“C:DatabasedumpFile.txt“);DataWriter dw=new DataWriter(fos);new DatabaseDataIO().writeDataToXML(platform_Derby, database_Derby,dw);以上代码展示了如何利用 DdlUtils 导出数据库的定义文件和数据库数据文件 .程序导出的数据库的定义文件 dbXML.txt 的内容如下所示。他包含了数据库表格的详细描述程序导出的数据库数据文件 dumpFile.txt 内容如下所示。他包含了具体的数据信息.从上述文件可以看到,DdlUtils 用统一的模式把数据库和其中的对象统一抽取成 DdlUtils认可的模式。在此我们的导出文件为 XML 文件,作为信息的载体,XML 独立于各种不同的数据库平台。有关 XML 文件格式限定的 schema,和 Ddlutils 对不同数据类型的转换,大家可在 /ddlutils/database-support.html 获取详细的解释下面对刚才程序中设计的类做简要说明Platform:在此 platform 是一个接口,他封装了与数据库相关的查询,维护等平台的功能,其真正的执行类是我门在创建数据源时对应制定的数据库驱动。org.apache.ddlutils.model.Database:代表了一个数据库的具体模型,包含了具体表格的定义等(注意 Database 包含的不是数据库的实际数据文件,而是数据库的定义描述).利用 DatabaseIO 就可以把内存中的 Database Model 输出成数据库定义 XML 文件.org.apache.ddlutils.io.DatabaseIO:提供了从 XML 文件读取数据库模型文件,和写数据库模型到 XML 文件的功能。第三步:利用 DdlUtils 导入数据库定义文件和数据库数据文件到 MySQL 数据中心.MySQLDdlUtils过程主要代码如下/从外部的 XML 文件获取数据库模型Database database_Derby =new DatabaseIO().read(“C:DatabasedbXML.txt“);/定义 mysql 数据源BasicDataSource dataSource_MySQL = new BasicDataSource();dataSource_MySQL.setDriverClassName(“com.mysql.jdbc.Driver“);dataSource_MySQL.setUsername(“root“);dataSource_MySQL.setPassword(“mysql“);dataSource_MySQL.setUrl(“jdbc:mysql:/localhost:3309/test“);/获取 MySQL 的数据库平台Platform platform_MySQL = PlatformFactory.createNewPlatformInstance(dataSource_MySQL);platform_MySQL.createTables(database_Derby, false, true);/获取外部数据库数据文件File dump=new File(“C:DatabasedumpFile.txt“);/构造一个 InputStream 输入流数组,根据实际需要可以添加多个FileInputStream fio=new FileInputStream(dump);InputStream infi=new InputStream1; infi0=fio;DatabaseDataIO databasedataIO=new DatabaseDataIO();/设定导入不启批量导入databasedataIO.setUseBatchMode(false);/设定遇到重复数据时直接忽略错误databasedataIO.setFailOnError(false);/数据导入databasedataIO.writeDataToDatabase(platform_MySQL,database_Derby, infi);程序执行后 MySQL 数据库结果如图成功插入了 id 为 4 值为赵七的纪录 .在以上程序中,借助第二步中所得的数据库描述文件和数据库定义文件,将 Derby 数据库中的数据,迁移到了 MySQL 数据库中。在此我们看到程序员在整个过程中甚至不必知道数据库的实现细节。也不必知道
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 标准件零部件工业耗材双11宣传及营销方案
- 2026年防冻知识教育主题班会
- 2026年物流师中级笔试模拟试卷
- XXXX公司吸盘吊安全操作规程
- 2026年服务知识竞赛活动方案
- WindowsServer系统配置管理项目化教程(WindowsServer2025)-实训指导书任务6实现公司各部门局域网互联互通
- 2026年教师资格证面试仿真题及教案
- 2026年专利代理人资格考试模拟题及解析
- 2026年道路养护技术招聘仿真题集
- 2026年中医执业医师资格考试内部资料分享
- 2026四川甘孜州甘孜县人民医院考试招聘护士8人笔试备考题库及答案详解
- 2025江苏苏州市城投集团第一批次招聘16人笔试历年参考题库附带答案详解
- 2026年绍兴市社区工作者(专职网格员)招聘考试试卷1含答案解析
- 2026年纪检监察考试题库(附参考答案)
- 2026年北京市丰台区九年级中考语文二模试卷附答案解析
- 第22课 《太空一日》课件(内嵌视频 ) 2025-2026学年统编版语文七年级下册
- GB/T 21186-2026傅立叶变换红外光谱仪
- 2025年事业单位预防医学岗《公卫知识》真题及答案解析
- 2026春人教版六年级语文下册全单元知识点归纳
- 2025年度中国展览数据统计报告
- (完整版)企业商业秘密管理体系及保密措施
评论
0/150
提交评论