一种数据库的数据转储方法及系统技术方案

技术编号:34522245 阅读:14 留言:0更新日期:2022-08-13 21:12
本申请涉及一种数据库的数据转储方法、系统、计算机设备和存储介质。所述方法包括:根据待转储数据库中数据的数据模式文件,在目标数据库建立匹配的数据模式,并建立待转储数据库中数据的数据内容文件列表的任务列表;任务列表中包括多个任务对象;根据数据内容文件列表的记录数目,建立多线程;在线程中,根据任务对象的关系数据,采用预先构建的PrepareStatement对象对任务列表中的任务对象执行批量写入操作。采用本方法能够提高大数据量的数据转储效率。据量的数据转储效率。据量的数据转储效率。

【技术实现步骤摘要】
一种数据库的数据转储方法及系统


[0001]本申请涉及数据库
,特别是涉及一种数据库的数据转储方法、装置、计算机设备和存储介质。

技术介绍

[0002]随着数据库技术的发展,关系数据库MySQL是许多业务信息系统的关系数据存储工具。在一些试验或应用场景中,需要对MySQL数据库中的数据进行转储,即将待转储的数据库的数据模式和数据内容,在其他的MySQL数据库中建立起相同内容的备份,目前的MySQL数据库转储目前使用的主要方法有如下3种:使用Navicat软件中的数据库导出导入功能;使用MySQL数据库source命令;使用MySQL数据库mysqldump命令。这3种方法都是首先将待转储的MySQL数据库中的数据模式和数据内容导出为sql转储文件,然后在目的数据库中对sql转储文件进行导入,这3种方法能够满足大部分MySQL数据库使用场景下的数据转储要求
[0003]然而,在数据量较大的情形下,如单表数据超过3000万条,这3种方法往往执行时间过长甚至出现宕机情形。即使进行参数调优,也带来参数设置容易出错、多次试验才能获得相对优化速度、数据转储时间仍然过长(仍需数个小时以上)等问题。

技术实现思路

[0004]基于此,有必要针对上述技术问题,提供一种能够提高大数据量的数据转储效率的一种数据库的数据转储方法、系统、计算机设备和存储介质。
[0005]一种数据库的数据转储方法,所述方法包括:
[0006]根据待转储数据库中数据的数据模式文件,在目标数据库建立匹配的数据模式,并建立待转储数据库中数据的数据内容文件列表的任务列表;任务列表中包括多个任务对象;
[0007]根据数据内容文件列表的记录数目,建立多线程;
[0008]在线程中,根据任务对象的关系数据,采用预先构建的PrepareStatement对象对任务列表中的任务对象执行批量写入操作。
[0009]在其中一个实施例中,根据待转储数据库中数据的数据模式文件,在目标数据库建立匹配的数据模式,并建立待转储数据库中数据的数据内容文件列表的任务列表,包括:
[0010]利用数据导出软件从所述待转储数据库中导出数据信息;数据信息包括数据模式文件和数据表的数据内容文件列表;数据导出软件优选为Navicat软件;
[0011]根据数据模式在目标数据库中建立相同的数据模式;
[0012]利用Java程序建立数据内容文件列表的任务列表。
[0013]在其中一个实施例中,利用数据导出软件从待转储数据库中导出数据信息,包括:
[0014]利用数据导出软件通过配置好的数据库地址、用户名、密码连接到待转储数据库;
[0015]在数据导出软件中选中待转储数据库,使用导出功能,导出数据模式文件;
[0016]在数据导出软件中选中待转储数据库的各个数据表,使用数据导出功能,导出待转储数据库的数据表的数据内容文件列表。
[0017]在其中一个实施例中,根据数据模式在目标数据库中建立相同的数据模式,包括:
[0018]利用数据导出软件通过配置好的数据库地址、用户名、密码连接到目标数据库,在数据导出软件中选中目标数据库,使用导入功能,导入待转储数据库导出的数据模式文件,完成相同的数据模式的建立。
[0019]在其中一个实施例中,根据数据内容文件列表的记录数目,建立多线程,包括:
[0020]将记录数目与预先设置的每个批次写入的数据记录常数进行比较,若记录数目大于数据记录常数,则从记录数目中提取与数据记录常数相同数量的记录建立一个线程,若记录数目小于等于数据记录常数,则只建立一个线程;每个批次写入的数据记录常数根据待转储数据库所处的计算机的性能进行设置。
[0021]在其中一个实施例中,任务对象的关系数据包括表名和字段类型列表;获取任务对象的关系数据的过程包括:
[0022]从任务对象中取出表名,将任务对象中的字段列表拼接为查询语句,使用查询语句在目标数据库中执行查询操作,得到查询结果;
[0023]根据查询数据结果的元数据对象获取字段类型列表。
[0024]在其中一个实施例中,任务对象的关系数据还包括数据内容文件;在线程中,根据任务对象的关系数据,采用预先构建的PrepareStatement对象对任务列表中的任务对象执行批量写入操作,包括:
[0025]在线程中,基于java程序包构建java.sql.PrepareStatement对象,根据任务对象的待写入表名批量插入sql语句;
[0026]从数据内容文件中逐批次取一批数据记录,对每条记录逐字段按照字段类型列表中的字段类型,在java.sql.PrepareStatement对象中进行字段类型转化,得到转化后的字段值;
[0027]然后对字段转化过程执行批量处理提交操作,直至所有数据记录取完并写入成功,则线程结束。
[0028]一种数据库的数据转储系统,包括处理器,以及与所述处理器连接的存储器,所述存储器存储有一种数据库的数据转储方法的程序,所述程序执行时实现以下步骤:
[0029]根据待转储数据库中数据的数据模式文件,在目标数据库建立匹配的数据模式,并建立待转储数据库中数据的数据内容文件列表的任务列表;任务列表中包括多个任务对象;
[0030]根据数据内容文件列表的记录数目,建立多线程;
[0031]在线程中,根据任务对象的关系数据,采用预先构建的PrepareStatement对象对任务列表中的任务对象执行批量写入操作。
[0032]一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
[0033]根据待转储数据库中数据的数据模式文件,在目标数据库建立匹配的数据模式,并建立待转储数据库中数据的数据内容文件列表的任务列表;任务列表中包括多个任务对象;
[0034]根据数据内容文件列表的记录数目,建立多线程;
[0035]在线程中,根据任务对象的关系数据,采用预先构建的PrepareStatement对象对任务列表中的任务对象执行批量写入操作。
[0036]一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
[0037]根据待转储数据库中数据的数据模式文件,在目标数据库建立匹配的数据模式,并建立待转储数据库中数据的数据内容文件列表的任务列表;任务列表中包括多个任务对象;
[0038]根据数据内容文件列表的记录数目,建立多线程;
[0039]在线程中,根据任务对象的关系数据,采用预先构建的PrepareStatement对象对任务列表中的任务对象执行批量写入操作。
[0040]上述一种数据库的数据转储方法、系统、计算机设备和存储介质,根据待转储数据库中数据的数据模式文件,在目标数据库建立匹配的数据模式,并建立待转储数据库中数据的数据内容文件列表的任务列表;任务列表中包括多本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据库的数据转储方法,其特征在于,所述方法包括:根据待转储数据库中数据的数据模式文件,在目标数据库建立匹配的数据模式,并建立待转储数据库中数据的数据内容文件列表的任务列表;所述任务列表中包括多个任务对象;根据所述数据内容文件列表的记录数目,建立多线程;在所述线程中,根据所述任务对象的关系数据,采用预先构建的PrepareStatement对象对所述任务列表中的任务对象执行批量写入操作。2.根据权利要求1所述的方法,其特征在于,根据待转储数据库中数据的数据模式文件,在目标数据库建立匹配的数据模式,并建立待转储数据库中数据的数据内容文件列表的任务列表,包括:利用数据导出软件从所述待转储数据库中导出数据信息;所述数据信息包括数据模式文件和数据表的数据内容文件列表;所述数据导出软件优选为Navicat软件;根据所述数据模式在目标数据库中建立相同的数据模式;利用Java程序建立所述数据内容文件列表的任务列表。3.根据权利要求2所述的方法,其特征在于,利用数据导出软件从所述待转储数据库中导出数据信息,包括:利用数据导出软件通过配置好的数据库地址、用户名、密码连接到所述待转储数据库;在数据导出软件中选中所述待转储数据库,使用导出功能,导出数据模式文件;在数据导出软件中选中所述待转储数据库的各个数据表,使用数据导出功能,导出所述待转储数据库的数据表的数据内容文件列表。4.根据权利要求3所述的方法,其特征在于,根据所述数据模式在目标数据库中建立相同的数据模式,包括:利用数据导出软件通过配置好的数据库地址、用户名、密码连接到目标数据库,在数据导出软件中选中所述目标数据库,使用导入功能,导入所述待转储数据库导出的数据模式文件,完成相同的数据模式的建立。5.根据权利要求3所述的方法,其特征在于,根据所述数据内容文件列表的记录数目,建立多线程,包括:将所述记录数目与预先设置的每个批次写入的数据记录常数进行比较,若所述记录数目大于所述数据记录常数,则从所述记...

【专利技术属性】
技术研发人员:丁鲲张慧刘浏张骁雄刘姗姗刘茗蒋国权
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1