System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种关系型数据库数据的通用备份还原方法技术_技高网

一种关系型数据库数据的通用备份还原方法技术

技术编号:41247907 阅读:2 留言:0更新日期:2024-05-09 23:57
本发明专利技术公开了一种关系型数据库数据的通用备份还原方法,应用于数据备份技术领域,其方法包括:步骤1:制作存储库表结构和数据的二进制格式文件;所述文件由数据定义段和数据段组成;步骤2:通过数据库接口访问和操作数据库,将表导出到所述文件中;步骤3:数据导入。本发明专利技术更为灵活,可通过元信息任意组装各类数据库产品支持的SQL语句,并且使用较少的磁盘空间;断开了导出的备份文件与数据库之间的关联,即备份文件与某特定的数据库产品之间不再有关联关系,具有较快的速度以及更高的稳定性。

【技术实现步骤摘要】

本专利技术涉及数据备份,尤其涉及一种关系型数据库数据的通用备份还原方法


技术介绍

1、常见关系型数据库如oracle、mysql、sqlserver、postgresql等均提供有库表结构以及数据的导出备份功能,若需对数据库中的库表结构或数据进行备份,则需要使用数据库厂商所提供的备份工具进行相应操作。导出的数据可用于容灾以及同类数据库的数据迁移。

2、几乎所有的关系型数据库均提供的库表结构以及数据的导出备份功能,但不同的数据库厂商所提供的导出功能存在较大差异。数据导出后需将导出的数据存入磁盘,存入磁盘则要求按照某种格式进行存储,以便进行数据恢复时能够进行数据解析。常用的文件存储格式有sql、csv、以特定符号进行分隔的文本文件、二进制格式文件等,其中csv和以特定符号进行分隔的文本文件不便于存储库表结构。

3、虽然各类数据库产品均能将库表结构以及数据导出为sql脚本,但不同的数据库产品间的sql语法存在或多或少的差异,数据类型也存在差异,无法做到完全兼容。如从mysql导出的sql脚本无法直接导入到oracle。

4、常见数据库产品基本都支持二进制数据类型,如blob数据数据类型。若数据表中包含此类数据,则无法将此类数据导出至文本格式类型的文件,如sql脚本、csv等。

5、将数据导出为sql脚本除了无法保证在各类不同的数据库产品间的兼容性,还存在一个显著的问题,关系型数据库中通常情况下存储的数据量较为庞大,若将所有数据全部存储为sql语句,则需要较大的存储空间。二进制文件则优于sql脚本,但二进制文件的格式在数据库产品间没有统一的格式规范,数据库产品无法兼容由其他数据库导出的二进制的备份文件。


技术实现思路

1、本专利技术的目的在于克服现有技术的不足,提供一种关系型数据库数据的通用备份还原方法。

2、本专利技术的目的是通过以下技术方案来实现的:

3、一种关系型数据库数据的通用备份还原方法,包括以下步骤:

4、步骤1:制作存储库表结构和数据的二进制格式文件;所述文件由数据定义段和数据段组成;

5、步骤2:通过数据库接口访问和操作数据库,将表导出到所述文件中;

6、步骤3:数据导入。

7、进一步的,所述数据定义段包括表所在库的信息、表信息、字段信息、索引信息和外键信息;所述字段信息包括一个字段是否为主键、唯一值和自增长。

8、进一步的,所述文件的格式中均使用无符号数据类型存储长度相关的数据,文件最前面使用4字节存储此文件中的存储的表的个数,从表总长度到表数据结束为一个表的全部信息,下一张表的总长度紧接在上一张表数据结束之后,多张表则由此重复;文件中保存的某一段数据的总长度的值不包含记录此长度值的字节数,各类长度值的用途均为快速跳过此段数据;指示器所占字节数由字段个数决定,一个字段使用两位,则指示器所占字节数为:(字段数+3)/4;每个字段的两位指示器从左往右分别是为空和为大对象,1表示真,0表示假;多个字段的指示器排列顺序为从左至右;若某行中的某列的值为空,则此数据将没有指示器后的数据信息,仅在指示器中的对应位的为空标志置1;在记录数据长度时,若当前列的类型为非大对象,则使用2个字节记录数据的长度,否则使用4个字节记录数据的长度。

9、进一步的,步骤2中,若多张表导出到同一个文件中,则在上一个表结束后紧接着写下一张表的数据。

10、进一步的,所述步骤2具体包括以下子步骤:

11、步骤201:使用数据库访问接口执行sql语句查询数据库系统表,获取目标表的所在库、所在模式、表信息、表的字段信息、索引信息和约束信息;

12、步骤202:写文件,根据文件的格式将步骤201获取到的所有信息写入所述文件中;通过传入参数控制是否对备份文件进行切分,将不同的表数据存储在不同的备份文件中,并开启并发导出;

13、步骤203:使用数据库访问接口执行sql语句查询目标表数据,再将数据按照文件的格式写入所述文件中。

14、进一步的,所述步骤3具体包括以下子步骤:

15、步骤301:按照所述文件的格式读取文件中的各类信息,通过参数指定多个备份文件,以并发的方式导入数据;

16、步骤302:根据目标数据库的语法拼装sql语句;

17、步骤303:使用目标数据库的接口发送并执行sql语句。

18、本专利技术的有益效果:

19、(1)本专利技术提供的关系型数据库数据的通用备份还原方法,相较于导出为sql脚本,导出为二进制文件存储数据更为灵活,能够支持blob等二进制数据类型,因备份文件存储的数据库库表结构的元信息,可通过元信息任意组装各类数据库产品支持的sql语句,并且使用较少的磁盘空间。

20、(2)本专利技术提供的关系型数据库数据的通用备份还原方法,断开了导出的备份文件与数据库之间的关联,即备份文件与某特定的数据库产品之间不再有关联关系,从某数据库产品导出的数据能够导入到其他的数据库产品中。

21、(3)本专利技术提供的关系型数据库数据的通用备份还原方法,使用本专利技术进行数据迁移,数据需先被导出至磁盘,再将导出的备份文件拷贝至导入库的硬件环境中再进行导入,因此导出库和导入库不需要网络直连,且此方案具有较快的速度以及更高的稳定性。

22、(4)本专利技术提供的关系型数据库数据的通用备份还原方法,可对导出的备份文件进行切分,防止单个文件过于庞大,可解决某些文件系统不持支单个大文件的问题,如fat32单个文件最大4g。

23、(5)本专利技术提供的关系型数据库数据的通用备份还原方法,支持文件切分,不同的表数据可分布在不同的备份文件中,因此导出导入均可使用并发的方式,使得多张表的导出导入可同时进行,具备较高的效率。

本文档来自技高网...

【技术保护点】

1.一种关系型数据库数据的通用备份还原方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的一种关系型数据库数据的通用备份还原方法,其特征在于,所述数据定义段包括表所在库的信息、表信息、字段信息、索引信息和外键信息;所述字段信息包括一个字段是否为主键、唯一值和自增长。

3.根据权利要求1所述的一种关系型数据库数据的通用备份还原方法,其特征在于,所述文件的格式中均使用无符号数据类型存储长度相关的数据,文件最前面使用4字节存储此文件中的存储的表的个数,从表总长度到表数据结束为一个表的全部信息,下一张表的总长度紧接在上一张表数据结束之后,多张表则由此重复;文件中保存的某一段数据的总长度的值不包含记录此长度值的字节数,各类长度值的用途均为快速跳过此段数据;指示器所占字节数由字段个数决定,一个字段使用两位,则指示器所占字节数为:(字段数+3)/4;每个字段的两位指示器从左往右分别是为空和为大对象,1表示真,0表示假;多个字段的指示器排列顺序为从左至右;若某行中的某列的值为空,则此数据将没有指示器后的数据信息,仅在指示器中的对应位的为空标志置1;在记录数据长度时,若当前列的类型为非大对象,则使用2个字节记录数据的长度,否则使用4个字节记录数据的长度。

4.根据权利要求1所述的一种关系型数据库数据的通用备份还原方法,其特征在于,所述步骤2中,若多张表导出到同一个文件中,则在上一个表结束后紧接着写下一张表的数据。

5.根据权利要求1所述的一种关系型数据库数据的通用备份还原方法,其特征在于,所述步骤2具体包括以下子步骤:

6.根据权利要求1所述的一种关系型数据库数据的通用备份还原方法,其特征在于,所述步骤3具体包括以下子步骤:

...

【技术特征摘要】

1.一种关系型数据库数据的通用备份还原方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的一种关系型数据库数据的通用备份还原方法,其特征在于,所述数据定义段包括表所在库的信息、表信息、字段信息、索引信息和外键信息;所述字段信息包括一个字段是否为主键、唯一值和自增长。

3.根据权利要求1所述的一种关系型数据库数据的通用备份还原方法,其特征在于,所述文件的格式中均使用无符号数据类型存储长度相关的数据,文件最前面使用4字节存储此文件中的存储的表的个数,从表总长度到表数据结束为一个表的全部信息,下一张表的总长度紧接在上一张表数据结束之后,多张表则由此重复;文件中保存的某一段数据的总长度的值不包含记录此长度值的字节数,各类长度值的用途均为快速跳过此段数据;指示器所占字节数由字段个数决定,一个字段使用两位,则指示器所占字...

【专利技术属性】
技术研发人员:苏德财王松汉瑛李文彬李尤兵曾彬吴生勇梅杰
申请(专利权)人:成都虚谷伟业科技有限公司
类型:发明
国别省市:

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

1