收藏 分销(赏)

基于Java的数据库通用转储工具的研究.pdf

上传人:自信****多点 文档编号:2082996 上传时间:2024-05-15 格式:PDF 页数:4 大小:1.77MB
下载 相关 举报
基于Java的数据库通用转储工具的研究.pdf_第1页
第1页 / 共4页
基于Java的数据库通用转储工具的研究.pdf_第2页
第2页 / 共4页
亲,该文档总共4页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、SOFTWARE2023软 件第 44 卷 第 8期2023 年Vol.44,No.8作者简介:张雅茹(1980),女,江苏连云港人,硕士,讲师,研究方向:数据库。基于 Java 的数据库通用转储工具的研究张雅茹(连云港开放大学,江苏连云港 222006)摘要:当今企业的信息化生产实践中,数据库的使用十分广泛,企业为了满足不同业务需求,需要配置不同类型的数据库。为了确保数据库使用的安全性,兼顾高效性,降低数据存储迁移的难度,提高了数据的共享,研究了软件企业在生产实践中进行数据库间数据转储的实际需求,针对关系型数据库的数据库间数据转储的问题进行了调查,提出了一种基于 Java 技术开发实现的数据

2、库转储工具的解决方案。关键词:数据转储;Java;数据库中图分类号:TP311.13 文献标识码:A DOI:10.3969/j.issn.1003-6970.2023.08.044本文著录格式:张雅茹.基于Java的数据库通用转储工具的研究J.软件,2023,44(08):177-180Research on a General Database Dumping Tool Based on JavaZHANG Yaru(Lianyungang Open University,Lianyungang Jiangsu 222006)【Abstract】:In todays enterprise

3、information production practice,database is widely used,in order to meet different business needs,different types of databases need to be configured.To ensure the security of database use,considering efficiency,reduce the difficulty of data storage migration,improved data sharing,this paper studies

4、the actual needs of software enterprises for data transfer between databases in production practice,the problem of data dump between relational databases was investigated,solution of database dump tool developed and realized based on Java technology is proposed.【Key words】:data dump;Java;data bank设计

5、研究与应用0 引言在当今企业的信息化生产实践中,数据库扮演了非常重要的角色。企业为了满足不同业务需求引进不同类型数据库,这些数据库之间通常存在差异,同时数据库规模日渐庞大,复杂度日渐提升,都增加了数据转储或迁移的难度1。为了确保数据库使用的安全性,兼顾高效性,降低数据存储迁移的难度,提高了数据的共享,节省了大量的时间、人力,提出了基于 Java 技术开发的转储工具的模型以及实现方法,以期解决不同数据库之间的数据转储。1 转储工具简介转储工具(Dump Tool)采用了模块化的设计思想,转储工具中的各个功能模块都封装成类,在主窗体中按照需求,合理组织、引入各个功能模块。通过这种模式,可以提高项目

6、的健壮性,以及模块的复用程度2。在项目中,将数据库操作统一使用 Dao 类进行封装;将项目中的各业务逻辑,分装成类或抽象为接口;对于项目中的前台展示模块,根据具体需求,分别继承相应的 Java Swing 组件3。按照这种分层模式,实现了底层数据库操作与业务逻辑的分离,业务逻辑与表示层的分离,增强了系统的可读性及维护性。2 转储工具功能结构设计利用模块化的思想,设计转储工具的架构。同时,基于转储工具的功能分析,转储工具由以下模块组成:数据库连接/切换模块、数据库操作模块、数据导出模块、数据转储模块、工具主界面展示模块,如图 1 所示。数据库间转储工具的功能,首先是数据库的连接,用户根据需求选择

7、数据库。其次,在连接数据库之后,根据所连接的数据库类型、用户,展示相应的工具主界面。之后,根据需求查询要找的表或查看表的部分记录,并选定。然后,根据需求对选定的对象进行导出数据或转储数据的处理;对于导出数据,分别导出 XML、178软 件第 44 卷 第 8 期SOFTWAREXLS、SQL 三种文件方式,同时又分完整与部分导出两种处理方式;对于转储数据,分表的完整转储与选择部分记录的部分转储。之后,用户可根据需求,进行数据库的切换。3 转储工具核心模块(数据转储模块)的设计3.1 数据库处理数据库处理就是负责实现软件与数据库的数据交互功能,将数据访问功能的方法进行封装、优化,提高代码重用性及

8、应用程序的开发效率,其主要操作对象是数据库,在运行过程中包含了大量数据库操作(包括针对数据库的系统数据字典的查询)4。在项目的研究开发中,将数据库操作统一封装在 Dao.java 中;不同数据库的数据类型转换,通过构造 DataTypeConvertor 类来实现5。3.1.1 数据库操作的 SQL 脚本获取指定表的结构。AOracle:SELECT COLUMN_NAME,DATA_TYPE,COLUMN_ID,NULLABLE,CHARACTER_SET_NAME,CHAR_COL_DECL_LENGTH,DATA_PRECISION,DATA_SCALE FROM user_tab_co

9、ls where table_name=*order by COLUMN_ID;-*表示表名BMSSQL:SELECT column_name,data_type,ordinal_position,is_nullable,character_set_name,character_octet_length,numeric_precision,numeric_scale from INFORMATION_SCHEMA.columns where table_name=*;-*表示表名CMYSQL:desc *;-*表示表名3.1.2 数据库间数据类型转换的主要思想对于关系型数据库而言,所提供的数据

10、类型主要有数值型数据、字符串型数据、时间型数据、二进制数据等。同时,不同厂家的数据库产品对于同一数据类型可能有不同分类、不同命名,这给实现不同数据库间转储带来了难题,不同数据库产品难以直接转储。因而,这个问题的解决是实现不同类型数据库间数据转储的关键。经过深入的研究、比对,本转储工具采用较为稳妥的策略解决该问题,转储工具通过一个数据库字段类型转换类(DataTypeConvertor)来实现数据库类型名的转换。在转储工具处理数据转储过程中,先实例化 DataTypeConvertor 类的对象,设定转储源数据库和目标数据库的类型标识(在本转储工具运行时,对于连接不同类型的数据库设定不同的标识,

11、ORACLE、MYSQL、MSSQL 分别设定为 0、1、2)。之后,根据要转储的表的结构信息(主要是表的字段信息)通过DataTypeConvertor 的 dataConvert()方法遍历表的字段信息,根据设定的源数据库标识和目标数据库标识,选择相应的数据类型转换方法,对数据类型名转换为对应的目标数据的类型名。完成对转储的表进行的“源数据库目标数据库”数据类型转换后,工具的转储模块将针对转换后的表结构信息,生成与目标数据库相符的建表信息以及 INSERT 插入语句集,然后实现数据库间的数据转储。3.2 数据转储模块3.2.1 批量转储子模块转储工具中,批量转储是用户通过查询窗口的主表中选

12、择一个以上的表,然后实现选定表的转储,对于单个数据表是将其所有数据转储到目标数据库中,是完整的转储。选择数据表后,选定的表名将存储在Subindex(是List类型)的链表中;当单击“批量转储”按钮后,将遍历获取 Subindex 中的要转储的表名,然后根据当前获取的表名实例化用于处理完整转储的 DumpTable类的对象,在 DumpTable 的方法中实现转储。DumpTable 类中调用其 beginToDump()方法,在该方法中首先获取指定表的参照关系链表。对于没有参照关系的表,则直接调用 execInsert()方法将转储数据插入目标数据库中;对于有参照关系的表,则采用递归算法,根

13、据被参表名实例化一 DumpTable 类的对象,直到参照关系的“最顶层”表(该表应没有外键约束),执行 execInsert()方法将数据插入目标库中;然后,递归返回依次完成表的转储。这一递归过程,实现了数据图 1 转储工具的架构Fig.1 The architecture of the dump tool数据库间转储工具切换数据库连接数据表查询配置数据库连接数据表储存数据表导出切换连接 Oracle切换连接 MySQL切换连接 MSSQL数据库表精确查询数据库表模糊查询Oracle 连接MYSQL 连接MSSQL 连接数据表完整转储表记录部分转储导出 XLS 文件导出 XML 文件导出 S

14、QL 文件179张雅茹:基于 Java 的数据库通用转储工具的研究表关系的准确对应。实现批量转储核心代码:/完整转储启动方法private void beginToDump()usePreConnect();/获取当前表的参照关系refList=Dao.getRefForDump_Totally(tableName);if(null=refList|refList.isEmpty()execInsert();else/根据参照关系链表,采用递归算法,优先转储被参照表for(int i=0;irefList.size();i+)String curRef=refList.get(i);new D

15、umpTable(curRef);execInsert();/完整转储执行批量插入private void execInsert()Dao dao=new Dao();TableInfo tempTable=Dao.getTableInfo(tableName);String create_sql=dao.getCreateSQL(tableName);int count=Dao.getTableRecordCounts(tableName);if(count=0useDestConnect();dao.createTable(create_sql);elseList insert_sql=n

16、ull;/表记录不足 20000 直接转储if(count20000)insert_sql=dao.createInsertSQL_ALL(tempTable);dao.execInsertBatch(insert_sql);else/超过 20000,采用“分页”策略批量转储useDestConnect();dao.createTable(create_sql);int parts=count/10000;if(count%10000!=0)parts+;for(int i=1;i=parts;i+)usePreConnect();insert_sql=dao.createInsertSQL

17、_Partly(temp Table,i,10000);useDestConnect();dao.execInsertBatch(insert_sql);3.2.2 部分转储子模块转储工具提供部分转储,首先是查询指定的一张数据表,按一定的顺序获取表的所有记录,并予以展示;对于记录较多的表进行分页展示,每次展示其中的部分数据,根据需求可以上下翻页进行数据的挑选。之后将选定的表的关键字段值存入 Detindex(List 类型)链表中,设定好转储目标数据库后,通过 Detindex实例化一个部分转储类 PartlyDump 的对象,通过PartlyDump 的方法实现部分转储。部分转储子模块相关核

18、心代码:/部分转储启动方法private void beginToDump()usePreConnect();Dao dao=new Dao();/获取参照表List list=Dao.getRefForDump_Partly(valueEX.getTableName();List lastSQL=dao.createInsertSQL_ByKey(valueEX);if(null=list|list.isEmpty()execInsert(lastSQL);elsesimplizeRef(list);/根据参照关系链表,采用递归算法,优先转储被参照表for(int i=0;irefList.

19、size();i+)RefConstraint curRef=refList.get(i);/生成指定记录关键值ColumnValueEX curEX=new ColumnValueEX();curEX.setTableName(curRef.getRefTable Name();curEX.setColumnName(curRef.getRefColumn Name();180软 件第 44 卷 第 8 期SOFTWAREList tempValue=Dao.getRefKeyByKey(curRef,valueEX);if(tempValue.size()!=0)for(int k=0;k

20、tempValue.size();k+)curEX.setValue(tempValue.get(k);new PartlyDump(curEX);/部分转储执行插入操作private void execInsert(List lastSQL)Dao dao=new Dao();String create_sql=dao.getCreateSQL(valueEX.getTableName()useDestConnect();/首先在目标数据库中建表dao.createTable(create_sql);/批量操作批处理dao.execInsertBatch(lastSQL);usePreCon

21、nect();4 项目实施部署本转储工具的研究,是基于 Java 技术开发的 Java桌面应用程序,研究过程中使用 Jdbc 操作数据库,使用Java Swing 开发工具的前台操作界面。采用 NetBeans IDE 平台开发,转储工具开发完成后,应将项目打包成.jar 文件。5 结语基于不同数据库之间的通用转储工具的研究,源于某信息技术有限公司实际生产中所遇到的实际问题,因而是一次解决实际问题的一次探究,故具有一定的实用价值和意义。项目实践中,应用了 Java 技术,Java 自身所拥有的良好特性,使得研究的成果具有良好的使用功能以及一定的跨平台性能,在操作系统层面上增加了通用性。参考文献

22、1 艾萍,曾顺,岳兆新.异构数据库转储平台设计与实现J.信息技术,2013,37(9):18-22+27.2 刘如九,张振山,柴天佑.一种通用的多数据库间数据抽取方法及应用J.北京交通大学学报,2008(4):14-18.3 耿祥义,张跃平.Java2实用教程(第三版)M.北京:清华大学出版社,2006.4 何明,何茜颖.Oracle SQL培训教程M.北京:清华大学出版社,2010.5 郭珺.基于SQL Server的主动式数据转储技术研究D.哈尔滨:哈尔滨工程大学,2017.大量研发力量,一些基于 Web 的操作系统纷纷被推出,例如,YouOS 与 EyeOS 等。但是到了 2008 年左

23、右(例如,2008 年 10 月微软正式推出了云计算产品 Windows Azure Platform,标志着微软云计算的软件平台已经建立5),云计算逐渐成为新“宠儿”。WebOS 逐渐被虚拟化和云平台取代,WebOS 的研发项目纷纷停止,例如,2011 年 8 月惠普宣布放弃 WebOS 运营6。网络操作系统市场虽然已经退潮,但并不意味着用户需求就此消失,用户期望通过浏览器随时随地访问自己的操作系统,而不需要复杂的部署,这种需求始终存在,只是因为市场的裹挟,抑制了用户需求。本文讨论的技术方向仍然存有其价值。参考文献1 Amin Vahdat,Paul Eastham,Chad Yoshika

24、wa,et al.WebOS:Operating System Services for Wide Area ApplicationsR.Chicago Illinois,July,1998.2 李慧云,陆钢,梁柏青,等.WebOS现状和发展趋势分析J.信息通信技术,2014(2):57-62.3 李大光.基于WebOS的文件系统的设计与实现D.成都:电子科技大学,2013.4 刘晶.DOS命令速查手册M.北京:化学工业出版社,2010.5 罗达强.探析Windows Azure Platform微软云计算平台J.硅谷,2010(16):9-10.6 单祥茹.WebOS之殇操作系统之困J.中国电子商情(基础电子),2011(10):90.上接第176页

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 论文指导/设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服