CN114896335A - 一种数据库的数据转储方法及*** - Google Patents
一种数据库的数据转储方法及*** Download PDFInfo
- Publication number
- CN114896335A CN114896335A CN202210482436.3A CN202210482436A CN114896335A CN 114896335 A CN114896335 A CN 114896335A CN 202210482436 A CN202210482436 A CN 202210482436A CN 114896335 A CN114896335 A CN 114896335A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- task
- list
- dumped
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 63
- 230000008569 process Effects 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 13
- 230000006870 function Effects 0.000 claims description 13
- 230000008676 import Effects 0.000 claims description 8
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 238000012545 processing Methods 0.000 claims description 3
- 101100328886 Caenorhabditis elegans col-2 gene Proteins 0.000 description 4
- 101100328884 Caenorhabditis elegans sqt-3 gene Proteins 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种数据库的数据转储方法、***、计算机设备和存储介质。所述方法包括:根据待转储数据库中数据的数据模式文件,在目标数据库建立匹配的数据模式,并建立待转储数据库中数据的数据内容文件列表的任务列表;任务列表中包括多个任务对象;根据数据内容文件列表的记录数目,建立多线程;在线程中,根据任务对象的关系数据,采用预先构建的PrepareStatement对象对任务列表中的任务对象执行批量写入操作。采用本方法能够提高大数据量的数据转储效率。
Description
技术领域
本申请涉及数据库技术领域,特别是涉及一种数据库的数据转储方法、装置、计算机设备和存储介质。
背景技术
随着数据库技术的发展,关系数据库MySQL是许多业务信息***的关系数据存储工具。在一些试验或应用场景中,需要对MySQL数据库中的数据进行转储,即将待转储的数据库的数据模式和数据内容,在其他的MySQL数据库中建立起相同内容的备份,目前的MySQL数据库转储目前使用的主要方法有如下3种:使用Navicat软件中的数据库导出导入功能;使用MySQL数据库source命令;使用MySQL数据库mysqldump命令。这3种方法都是首先将待转储的MySQL数据库中的数据模式和数据内容导出为sql转储文件,然后在目的数据库中对sql转储文件进行导入,这3种方法能够满足大部分MySQL数据库使用场景下的数据转储要求
然而,在数据量较大的情形下,如单表数据超过3000万条,这3种方法往往执行时间过长甚至出现宕机情形。即使进行参数调优,也带来参数设置容易出错、多次试验才能获得相对优化速度、数据转储时间仍然过长(仍需数个小时以上)等问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高大数据量的数据转储效率的一种数据库的数据转储方法、***、计算机设备和存储介质。
一种数据库的数据转储方法,所述方法包括:
根据待转储数据库中数据的数据模式文件,在目标数据库建立匹配的数据模式,并建立待转储数据库中数据的数据内容文件列表的任务列表;任务列表中包括多个任务对象;
根据数据内容文件列表的记录数目,建立多线程;
在线程中,根据任务对象的关系数据,采用预先构建的PrepareStatement对象对任务列表中的任务对象执行批量写入操作。
在其中一个实施例中,根据待转储数据库中数据的数据模式文件,在目标数据库建立匹配的数据模式,并建立待转储数据库中数据的数据内容文件列表的任务列表,包括:
利用数据导出软件从所述待转储数据库中导出数据信息;数据信息包括数据模式文件和数据表的数据内容文件列表;数据导出软件优选为Navicat软件;
根据数据模式在目标数据库中建立相同的数据模式;
利用Java程序建立数据内容文件列表的任务列表。
在其中一个实施例中,利用数据导出软件从待转储数据库中导出数据信息,包括:
利用数据导出软件通过配置好的数据库地址、用户名、密码连接到待转储数据库;
在数据导出软件中选中待转储数据库,使用导出功能,导出数据模式文件;
在数据导出软件中选中待转储数据库的各个数据表,使用数据导出功能,导出待转储数据库的数据表的数据内容文件列表。
在其中一个实施例中,根据数据模式在目标数据库中建立相同的数据模式,包括:
利用数据导出软件通过配置好的数据库地址、用户名、密码连接到目标数据库,在数据导出软件中选中目标数据库,使用导入功能,导入待转储数据库导出的数据模式文件,完成相同的数据模式的建立。
在其中一个实施例中,根据数据内容文件列表的记录数目,建立多线程,包括:
将记录数目与预先设置的每个批次写入的数据记录常数进行比较,若记录数目大于数据记录常数,则从记录数目中提取与数据记录常数相同数量的记录建立一个线程,若记录数目小于等于数据记录常数,则只建立一个线程;每个批次写入的数据记录常数根据待转储数据库所处的计算机的性能进行设置。
在其中一个实施例中,任务对象的关系数据包括表名和字段类型列表;获取任务对象的关系数据的过程包括:
从任务对象中取出表名,将任务对象中的字段列表拼接为查询语句,使用查询语句在目标数据库中执行查询操作,得到查询结果;
根据查询数据结果的元数据对象获取字段类型列表。
在其中一个实施例中,任务对象的关系数据还包括数据内容文件;在线程中,根据任务对象的关系数据,采用预先构建的PrepareStatement对象对任务列表中的任务对象执行批量写入操作,包括:
在线程中,基于java程序包构建java.sql.PrepareStatement对象,根据任务对象的待写入表名批量***sql语句;
从数据内容文件中逐批次取一批数据记录,对每条记录逐字段按照字段类型列表中的字段类型,在java.sql.PrepareStatement对象中进行字段类型转化,得到转化后的字段值;
然后对字段转化过程执行批量处理提交操作,直至所有数据记录取完并写入成功,则线程结束。
一种数据库的数据转储***,包括处理器,以及与所述处理器连接的存储器,所述存储器存储有一种数据库的数据转储方法的程序,所述程序执行时实现以下步骤:
根据待转储数据库中数据的数据模式文件,在目标数据库建立匹配的数据模式,并建立待转储数据库中数据的数据内容文件列表的任务列表;任务列表中包括多个任务对象;
根据数据内容文件列表的记录数目,建立多线程;
在线程中,根据任务对象的关系数据,采用预先构建的PrepareStatement对象对任务列表中的任务对象执行批量写入操作。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
根据待转储数据库中数据的数据模式文件,在目标数据库建立匹配的数据模式,并建立待转储数据库中数据的数据内容文件列表的任务列表;任务列表中包括多个任务对象;
根据数据内容文件列表的记录数目,建立多线程;
在线程中,根据任务对象的关系数据,采用预先构建的PrepareStatement对象对任务列表中的任务对象执行批量写入操作。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
根据待转储数据库中数据的数据模式文件,在目标数据库建立匹配的数据模式,并建立待转储数据库中数据的数据内容文件列表的任务列表;任务列表中包括多个任务对象;
根据数据内容文件列表的记录数目,建立多线程;
在线程中,根据任务对象的关系数据,采用预先构建的PrepareStatement对象对任务列表中的任务对象执行批量写入操作。
上述一种数据库的数据转储方法、***、计算机设备和存储介质,根据待转储数据库中数据的数据模式文件,在目标数据库建立匹配的数据模式,并建立待转储数据库中数据的数据内容文件列表的任务列表;任务列表中包括多个任务对象;根据数据内容文件列表的记录数目,建立多线程;在线程中,根据任务对象的关系数据,采用预先构建的PrepareStatement对象对任务列表中的任务对象执行批量写入操作。本发明通过建立多线程,多线程在运行任务时,将转储过程中不同元数据结构的数据分配到不同的线程中,从而使得单个线程执行的批量数据始终是同一条sql语句,在每个线程中构建PrepareStatement对象,PrepareStatement对象通过“?”等符号来参数化,使得数据库可以重用sql语句,由于单个线程中使用的始终是同一条sql语句,使用相同结构的sql语句在数据库内部运行得更高效,从而显著提升所有数据转储的执行效率。
附图说明
图1为一个实施例中一种数据库的数据转储方法的流程图;
图2为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了一种数据库的数据转储方法,包括以下步骤:
步骤102,根据待转储数据库中数据的数据模式文件,在目标数据库建立匹配的数据模式,并建立待转储数据库中数据的数据内容文件列表的任务列表;任务列表中包括多个任务对象。
步骤104,根据数据内容文件列表的记录数目,建立多线程。
根据数据内容文件列表的记录数目,建立多线程,多线程在运行任务时,对转储过程中不同元数据结构的数据分配到不同的线程中,从而使得单个线程执行的批量数据始终是同一条sql语句,进而可以在线程中构建PrepareStatement对象来提升所有数据转储的执行效率。
步骤106,在线程中,根据任务对象的关系数据,采用预先构建的PrepareStatement对象对任务列表中的任务对象执行批量写入操作。
关系数据包括表名、字段类型列表和数据内容文件,表名是指该任务对象中转储的表的表名,数据内容文件是指任务对象中转储的表的数据内容文件,为数据内容文件列表对应的表的单个csv文件,字段类型列表是指任务对象中转储的表中的字段名称列表。如col1,col2,…,该字段名称顺序与数据内容文件TDF的第一行一致;
在线程中,利用PrepareStatement对象通过“?”等符号来参数化,使得数据库可以重用sql语句,使得相同结构的sql语句在数据库内部运行得更高效,由于在单个线程中的sql语句始终是同一条,所以对任务对象进行数据转储时,不需要再建立多个sql语句进行数据转储,进而提高了数据转储的效率。
上述一种数据库的数据转储方法中,根据待转储数据库中数据的数据模式文件,在目标数据库建立匹配的数据模式,并建立待转储数据库中数据的数据内容文件列表的任务列表;任务列表中包括多个任务对象;根据数据内容文件列表的记录数目,建立多线程;在线程中,根据任务对象的关系数据,采用预先构建的PrepareStatement对象对任务列表中的任务对象执行批量写入操作。本发明通过建立多线程,多线程在运行任务时,将转储过程中不同元数据结构的数据分配到不同的线程中,从而使得单个线程执行的批量数据始终是同一条sql语句,在每个线程中构建PrepareStatement对象,PrepareStatement对象通过“?”等符号来参数化,使得数据库可以重用sql语句,由于单个线程中使用的始终是同一条sql语句,使用相同结构的sql语句在数据库内部运行得更高效,从而显著提升所有数据转储的执行效率。
在其中一个实施例中,根据待转储数据库中数据的数据模式文件,在目标数据库建立匹配的数据模式,并建立待转储数据库中数据的数据内容文件列表的任务列表,包括:
利用数据导出软件从待转储数据库中导出数据信息;数据信息包括数据模式文件和数据表的数据内容文件列表;数据导出软件优选为Navicat软件;
根据数据模式在目标数据库中建立相同的数据模式;
利用Java程序建立数据内容文件列表的任务列表。
在任务列表TASKlist中的每个任务对象task包括如下内容:
(1)tableName:该任务对象中转储的表名。
(2)数据内容文件TDF:该任务对象中转储的表的数据内容文件。为数据内容文件列表中对应的表的单个csv文件。
(3)columnList:该任务对象中转储的表中的字段名称列表。如col1,col2,…,该字段名称顺序与数据内容文件TDF的第一行一致。
在其中一个实施例中,利用数据导出软件从待转储数据库中导出数据信息,包括:
利用数据导出软件通过配置好的数据库地址、用户名、密码连接到待转储数据库;
在数据导出软件中选中待转储数据库,使用导出功能,导出数据模式文件;
在数据导出软件中选中待转储数据库的各个数据表,使用数据导出功能,导出待转储数据库的数据表的数据内容文件列表。
待转储数据库的数据信息包括待转储数据库srcDB的数据模式文件DMF,和待转储的数据表的数据内容文件列表srcTDFs。
其步骤具体为:使用Navicat软件通过配置好的数据库地址、用户名、密码连接到待转储数据库srcDB。在Navicat软件中选中该数据库,使用导出功能(仅数据模式),导出数据模式文件DMF。在Navicat软件中选中该数据库的各个数据表,使用数据导出功能,导出待转储的数据表的数据内容文件列表srcTDFs。其中:
导出的数据模式文件DMF为.sql文件格式,里面为建立数据库模式信息的sql语句。
待转储的数据表的数据内容文件列表srcTDFs为多个csv文件,每个csv文件的文件名为对应的数据表名称,csv文件为文本格式,第一行为该表的数据字段名称,后面每行为一条数据记录,数据内容直接用逗号隔开,对应着第一行的每个数据字段。
在其中一个实施例中,根据数据模式在目标数据库中建立相同的数据模式,包括:
利用数据导出软件通过配置好的数据库地址、用户名、密码连接到目标数据库,在数据导出软件中选中目标数据库,使用导入功能,导入待转储数据库导出的数据模式文件,完成相同的数据模式的建立。
在该实施例中,使用Navicat软件通过配置好的数据库地址、用户名、密码连接到目标数据库dstDB。在Navicat软件中选中该数据库,使用导入功能,导入前一步骤中导出的数据模式文件DMF,即可完成数据模式的建立。
在其中一个实施例中,根据数据内容文件列表的记录数目,建立多线程,包括:
将记录数目与预先设置的每个批次写入的数据记录常数进行比较,若记录数目大于数据记录常数,则从记录数目中提取与数据记录常数相同数量的记录建立一个线程,若记录数目小于等于数据记录常数,则只建立一个线程;每个批次写入的数据记录常数根据待转储数据库所处的计算机的性能进行设置。
在该实施例中,设置每个批次写入的数据记录常数BATCH_NUM,根据实施例执行的计算机性能不同,设置的BATCH_NUM数值一般在10万至100万之间。上述批次是指数据内容文件列表中需要转储的数据量的批次。
在其中一个实施例中,任务对象的关系数据包括表名和字段类型列表;获取任务对象的关系数据的过程包括:
从任务对象中取出表名,将任务对象中的字段列表拼接为查询语句,使用查询语句在目标数据库中执行查询操作,得到查询结果;
根据查询数据结果的元数据对象获取字段类型列表。
在其中一个实施例中,任务对象的关系数据还包括数据内容文件;在线程中,根据任务对象的关系数据,采用预先构建的PrepareStatement对象对任务列表中的任务对象执行批量写入操作,包括:
在线程中,基于java程序包,构建java.sql.PrepareStatement对象,根据任务对象的待写入表名批量***sql语句;
从数据内容文件中逐批次取一批数据记录,对每条记录逐字段按照字段类型列表中的字段类型,在java.sql.PrepareStatement对象中进行字段类型转化,得到转化后的字段值;
然后对字段转化过程执行批量处理提交操作,直至所有数据记录取完并写入成功,则线程结束。
在java程序中,从任务对象列表TASKlist中依次取出每个任务对象task,依次对每个task执行基于多线程和批量对象的写入方法。该实施例的具体步骤如下:
S1:在TASKlist中取出一个task;
S2:在task中取出表名tableName,并获取task中表中对应的字段类型列表;
将task中的columnList字段列表拼接为该表的查询语句selectSql,格式例如:“select col1,col2,…from tableName”;使用查询语句selectSql在目的库中执行查询操作,使用查询数据结果的metaData元数据对象获取字段类型列表columnTypeList;
S3:读取数据内容文件TDF,根据数据量建立线程;
读取数据内容文件TDF的记录,如果记录数目超过BATCH_NUM,则为每BATCH_NUM数量的记录新建立一个线程thread,线程的数量建议不超过一个阈值(如10个)。如果记录数目小于等于BATCH_NUM,则只建立1个线程。如果线程数目大于阈值,则等待有线程执行任务完毕结束后再新建立线程。
S4:在每个线程中,构建PrepareStatement对象,逐批次对数据内容执行批量写入操作。具体过程如下:
在每个线程中,基于java程序包,构建java.sql.PrepareStatement对象pstmt,准备批量***sql语句,例如:“insert into tableName(col1,col2,…)values(?,?,…)”,其中,tableName为待写入表名。
逐批次从数据内容文件中取一批数据记录(如1万条),对每条记录逐字段按照columnTypeList中的字段类型,在pstmt对象中设置转化后的字段值,如:字段类型为91,则将csv中对应的字符串转换为日期类型,使用pstmt的设置日期值过程,然后对该过程执行批处理提交操作,直至所有数据记录取完并写入成功,则线程结束。
当该task的所有线程执行结束时,即为该task执行完毕。
S5:重复上述过程,直至TASKlist中的每个task执行完毕。
在其中一个实施例中,采用上述数据库的数据转储方法和***,能够在数据量较大的情况下(如单表数据量为3000万条),较好地提升数据转储效率。在单PC机测试环境下(i5十代处理器,16G内存,1T硬盘,约3000万条数据),转储时间为28分钟。同环境下,基于Navicat的数据导出导入方法转储时间大约为8个小时;使用数据库source命令的方法没有能在8个小时内完成数据导入过程。
应该理解的是,虽然图1的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
一种数据库的数据转储***,包括处理器,以及与处理器连接的存储器,存储器存储有一种数据库的数据转储方法的程序,程序执行时实现以下步骤:
根据待转储数据库中数据的数据模式文件,在目标数据库建立匹配的数据模式,并建立待转储数据库中数据的数据内容文件列表的任务列表;任务列表中包括多个任务对象;
根据数据内容文件列表的记录数目,建立多线程;
在线程中,根据任务对象的关系数据,采用预先构建的PrepareStatement对象对任务列表中的任务对象执行批量写入操作。
上述一种数据库的数据转储***中,在存储器存储有一种数据库的数据转储方法的程序中,根据待转储数据库中数据的数据模式文件,在目标数据库建立匹配的数据模式,并建立待转储数据库中数据的数据内容文件列表的任务列表;任务列表中包括多个任务对象;根据数据内容文件列表的记录数目,建立多线程;在线程中,根据任务对象的关系数据,采用预先构建的PrepareStatement对象对任务列表中的任务对象执行批量写入操作。本发明通过建立多线程,多线程在运行任务时,将转储过程中不同元数据结构的数据分配到不同的线程中,从而使得单个线程执行的批量数据始终是同一条sql语句,在每个线程中构建PrepareStatement对象,PrepareStatement对象通过“?”等符号来参数化,使得数据库可以重用sql语句,由于单个线程中使用的始终是同一条sql语句,使用相同结构的sql语句在数据库内部运行得更高效,从而显著提升所有数据转储的执行效率。
关于一种数据库的数据转储***的具体限定可以参见上文中对于一种数据库的数据转储方法的限定,在此不再赘述。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图2所示。该计算机设备包括通过***总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***和计算机程序。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据库的数据转储***方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图2中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现上述实施例中方法的步骤。
在一个实施例中,提供了一种计算机存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施例中方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种数据库的数据转储方法,其特征在于,所述方法包括:
根据待转储数据库中数据的数据模式文件,在目标数据库建立匹配的数据模式,并建立待转储数据库中数据的数据内容文件列表的任务列表;所述任务列表中包括多个任务对象;
根据所述数据内容文件列表的记录数目,建立多线程;
在所述线程中,根据所述任务对象的关系数据,采用预先构建的PrepareStatement对象对所述任务列表中的任务对象执行批量写入操作。
2.根据权利要求1所述的方法,其特征在于,根据待转储数据库中数据的数据模式文件,在目标数据库建立匹配的数据模式,并建立待转储数据库中数据的数据内容文件列表的任务列表,包括:
利用数据导出软件从所述待转储数据库中导出数据信息;所述数据信息包括数据模式文件和数据表的数据内容文件列表;所述数据导出软件优选为Navicat软件;
根据所述数据模式在目标数据库中建立相同的数据模式;
利用Java程序建立所述数据内容文件列表的任务列表。
3.根据权利要求2所述的方法,其特征在于,利用数据导出软件从所述待转储数据库中导出数据信息,包括:
利用数据导出软件通过配置好的数据库地址、用户名、密码连接到所述待转储数据库;
在数据导出软件中选中所述待转储数据库,使用导出功能,导出数据模式文件;
在数据导出软件中选中所述待转储数据库的各个数据表,使用数据导出功能,导出所述待转储数据库的数据表的数据内容文件列表。
4.根据权利要求3所述的方法,其特征在于,根据所述数据模式在目标数据库中建立相同的数据模式,包括:
利用数据导出软件通过配置好的数据库地址、用户名、密码连接到目标数据库,在数据导出软件中选中所述目标数据库,使用导入功能,导入所述待转储数据库导出的数据模式文件,完成相同的数据模式的建立。
5.根据权利要求3所述的方法,其特征在于,根据所述数据内容文件列表的记录数目,建立多线程,包括:
将所述记录数目与预先设置的每个批次写入的数据记录常数进行比较,若所述记录数目大于所述数据记录常数,则从所述记录数目中提取与所述数据记录常数相同数量的记录建立一个线程,若所述记录数目小于等于所述数据记录常数,则只建立一个线程;所述每个批次写入的数据记录常数根据所述待转储数据库所处的计算机的性能进行设置。
6.根据权利要求5所述的方法,其特征在于,所述任务对象的关系数据包括表名和字段类型列表;获取所述任务对象的关系数据的过程包括:
从所述任务对象中取出表名,将所述任务对象中的字段列表拼接为查询语句,使用查询语句在目标数据库中执行查询操作,得到查询结果;
根据所述查询数据结果的元数据对象获取字段类型列表。
7.根据权利要求6所述的方法,其特征在于,所述任务对象的关系数据还包括数据内容文件;在所述线程中,根据所述任务对象的关系数据,采用预先构建的PrepareStatement对象对所述任务列表中的任务对象执行批量写入操作,包括:
在所述线程中,基于java程序包,构建java.sql.PrepareStatement对象,根据所述任务对象的待写入表名批量***sql语句;
从所述数据内容文件中逐批次取一批数据记录,对每条记录逐字段按照所述字段类型列表中的字段类型,在java.sql.PrepareStatement对象中进行字段类型转化,得到转化后的字段值;
然后对字段转化过程执行批量处理提交操作,直至所有数据记录取完并写入成功,则线程结束。
8.一种数据库的数据转储***,其特征在于,包括处理器,以及与所述处理器连接的存储器,所述存储器存储有一种数据库的数据转储方法的程序,所述程序执行时实现上述权利要求1-7任一项所述方法的步骤。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210482436.3A CN114896335B (zh) | 2022-05-05 | 一种数据库的数据转储方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210482436.3A CN114896335B (zh) | 2022-05-05 | 一种数据库的数据转储方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114896335A true CN114896335A (zh) | 2022-08-12 |
CN114896335B CN114896335B (zh) | 2024-08-02 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110209650A (zh) | 数据规整迁移方法、装置、计算机设备和存储介质 | |
CN111061475B (zh) | 软件代码生成方法、装置、计算机设备和存储介质 | |
US20060059149A1 (en) | Generation of anonymized data records from productive application data | |
CN110689232A (zh) | 工作流配置的优化处理方法、装置和计算机设备 | |
CN108573019B (zh) | 一种数据迁移方法、装置、电子设备及可读存储介质 | |
CN109739828B (zh) | 一种数据处理方法、设备及计算机可读存储介质 | |
WO2020244445A1 (zh) | 一种覆盖信息获取方法及装置 | |
CN107644041B (zh) | 保单结算处理方法和装置 | |
CN111078500A (zh) | 运行配置参数的调整方法、装置、计算机设备和存储介质 | |
CN111552503B (zh) | 工程文件处理方法、装置、计算机设备及存储介质 | |
CN113535563A (zh) | 测试用例去重方法、装置、计算机设备及存储介质 | |
CN111459796B (zh) | 自动化测试方法、装置、计算机设备和存储介质 | |
CN112883121A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN114896335A (zh) | 一种数据库的数据转储方法及*** | |
CN114896335B (zh) | 一种数据库的数据转储方法及*** | |
CN116561003A (zh) | 测试数据生成方法、装置、计算机设备和存储介质 | |
CN115956240B (zh) | 基于增量克隆的数据库升级 | |
US8296336B2 (en) | Techniques for efficient dataloads into partitioned tables using swap tables | |
CN114756293A (zh) | 业务处理方法、装置、计算机设备和存储介质 | |
CN114116664A (zh) | 数据库建表语句处理方法、装置、计算机设备和存储介质 | |
CN113885898A (zh) | 一种固件批量烧录方法及终端 | |
CN116257531B (zh) | 一种数据库空间回收方法 | |
CN113867975B (zh) | 一种命令行的快速响应方法、装置和计算机设备 | |
CN117608536B (zh) | 缺口数据在线模版定制补录***及其方法 | |
US20230244587A1 (en) | Computer-Implemented Method for Performing a System Assessment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |