一种数据库数据导出工具的插件化实现方法转让专利

申请号 : CN202011608126.9

文献号 : CN113157784B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杨臣高庆安江磊石梦飞徐扬鲍之骁刘文硕陈磊

申请人 : 浪潮云信息技术股份公司

摘要 :

本发明公开了一种数据库数据导出工具的插件化实现方法,属于计算机软件数据库领域;所述的方法具体步骤如下:S1利用驱动管理系统对数据库的驱动程序插件进行维护,提供上传、更新及下载插件服务;S2利用模板管理系统维护导出模板插件,提供上传、更新及下载插件的服务;S3利用终端导出工具加载驱动插件和模板插件对数据库的数据进行导出;通过应用本发明方法,能够实现一个具有高效性、低成本、轻量化特性的数据库导出工具,同时该工具能够满足多源数据库的数据导出需求,具有高兼容、可灵活配置的特性,避免了多源数据库进行导出操作时的繁琐步骤。

权利要求 :

1.一种数据库数据导出工具的插件化实现方法,其特征是所述的方法具体步骤如下:S1利用驱动管理系统对数据库的驱动程序插件进行维护,提供上传、更新及下载插件服务;

S2利用模板管理系统维护导出模板插件,提供上传、更新及下载插件的服务;

S3利用终端导出工具加载驱动插件和模板插件对数据库的数据进行导出,具体步骤如下:S301定义Driver、DriverFactory接口和Template、TemplateFactory接口,具体步骤如下:S3011利用插件技术将DriverFactory和TemplateFactory实现类注册到导出工具主程序的DriverRegistry和TemplateRegistry中;

S3012利用DriverRegistry的变量driverFactories存储驱动工厂实现类;

S3013将存储的key值作为驱动工厂实现类的getHeader方法获取的值;

S3022利用TemplateRegistry的变量TemplateRegistry存储模板工厂实现类;

S3023将存储的key值作为模板工厂实现类的getHeader方法获取的值;

S302将驱动插件存放在driver目录下,将备份模板插件存放在template目录下;

S303导出命令参数,对输入的命令进行解析,终端导出工具完成对应数据库驱动插件和模板插件的加载;

S304终端导出工具内部执行器依据内置执行流程调用Template实例完成导出工作。

2.根据权利要求1所述的方法,其特征是所述S1利用驱动管理系统对连接需导出数据的数据库的驱动程序插件进行维护,提供上传、更新及下载插件服务,具体步骤如下:S101将驱动管理系统提供的驱动插件以本地化方式存储;

S102将开发驱动插件接入导出工具驱动的统一接口;

S103根据url_header获取驱动的存放地址,下载驱动插件。

3.根据权利要求2所述的方法,其特征是所述S101将驱动管理系统提供的驱动插件以本地化方式存储的具体步骤如下:S1011利用驱动管理系统所在本地数据库建立driver数据表;

S1012driver主键利用数据库连接协议头url_header以检索、更新驱动插件存储位置driver_address。

4.根据权利要求1所述的方法,其特征是所述S2利用模板管理系统维护针对不同平台研发的导出模板插件,提供上传、更新及下载插件的服务的具体步骤如下:S201将驱动管理系统提供的模板插件以本地化方式存储;

S202将开发模板插件接入导出模板的统一接口;

S203根据url_header获取模板的存放地址,下载模板插件。

5.根据权利要求4所述的方法,其特征是所述S201将驱动管理系统提供的模板插件以本地化方式存储的具体步骤如下:S2011利用模板管理系统所在本地数据库建立template数据表;

S2012template主键利用数据库连接协议头url_header以检索、更新驱动插件存储位置template_address。

6.根据权利要求1所述的方法,其特征是所述S303导出命令参数,对输入的命令进行解析,终端导出工具完成对应数据库驱动插件和模板插件的加载的具体步骤如下:S3031终端导出工具的DriverRegistry通过指定的协议头找出匹配的DriverFactory实现类;

S3032调用DriverFactory的creatDriver方法,创建连接数据库的驱动实例;

S3033调用Driver的createConnection方法创建数据库的连接实例;

S3034TemplateRegistry通过指定的协议头找出匹配的TemplateFactory实现类;

S3035调用TemplateFactory的createTemplate方法创建数据库的导出模板。

说明书 :

一种数据库数据导出工具的插件化实现方法

技术领域

[0001] 本发明公开一种数据库数据导出工具的插件化实现方法,涉及计算机软件数据库技术领域。

背景技术

[0002] 在数据库应用开发以及日常运维领域,数据导出是开发与运维人员在进行数据迁移、数据分析时经常面临的问题。随着大数据技术的兴起,应用中数据量极大的增长,而如何有效的将不同源数据库的数据进行导出,已成为数据库领域亟待解决的问题。现有的导出工具,例如面向TiDB的一些特性进行了优化的Dumpling,目前支持MySQL协议的数据库,但不支持导出多种数据库源;Mydumper则是针对MySQL和Drizzle的多线程备份恢复工具;同样类型的导出工具还有pg_dump,能够将PostgreSQL数据库提取到脚本文件或其他归档文件;又比如针对Oracle的导出工具只能实现对Oracle的数据导出。这些常用导出工具多集成在某一数据库的管理系统中,针对某一数据库的导出操作进行定制化设计,无法同时支持不同源数据库。而一款能够支持不同种类的源数据库数据导出的工具可以大大提高数据库开发和日常维护工作中的效率,故现发明一种数据库数据导出工具的插件化实现方法以解决上述问题。

发明内容

[0003] 本发明针对现有技术的问题,提供一种数据库数据导出工具的插件化实现方法,所采用的技术方案为:一种数据库数据导出工具的插件化实现方法,所述的方法具体步骤如下:
[0004] S1利用驱动管理系统对数据库的驱动程序插件进行维护,提供上传、更新及下载插件服务;
[0005] S2利用模板管理系统维护导出模板插件,提供上传、更新及下载插件的服务;
[0006] S3利用终端导出工具加载驱动插件和模板插件对数据库的数据进行导出。
[0007] 所述S1利用驱动管理系统对连接需导出数据的数据库的驱动程序插件进行维护,提供上传、更新及下载插件服务,具体步骤如下:
[0008] S101将驱动管理系统提供的驱动插件以本地化方式存储;
[0009] S102将开发驱动插件接入导出工具驱动的统一接口;
[0010] S103根据url_header获取驱动的存放地址,下载驱动插件。
[0011] 所述S101将驱动管理系统提供的驱动插件以本地化方式存储的具体步骤如下:
[0012] S1011利用驱动管理系统所在本地数据库建立driver数据表;
[0013] S1012driver主键利用数据库连接协议头url_header以检索、更新驱动插件存储位置driver_address。
[0014] 所述S2利用模板管理系统维护针对不同平台研发的导出模板插件,提供上传、更新及下载插件的服务的具体步骤如下:
[0015] S201将驱动管理系统提供的模板插件以本地化方式存储;
[0016] S202将开发模板插件接入导出模板的统一接口;
[0017] S203根据url_header获取模板的存放地址,下载模板插件。
[0018] 所述S201将驱动管理系统提供的模板插件以本地化方式存储的具体步骤如下:
[0019] S2011利用模板管理系统所在本地数据库建立template数据表;
[0020] S2012template主键利用数据库连接协议头url_header以检索、更新驱动插件存储位置template_address。
[0021] 所述S3利用终端导出工具加载不同数据库源的相应驱动插件和模板插件对该数据库的数据进行导出,具体步骤如下:
[0022] S301定义Driver、DriverFactory接口和Template、TemplateFactory接口;
[0023] S302将驱动插件存放在driver目录下,将备份模板插件存放在template目录下;
[0024] S303导出命令参数,对输入的命令进行解析,终端导出工具完成对应数据库驱动插件和模板插件的加载;
[0025] S304终端导出工具内部执行器依据内置执行流程调用Template实例完成导出工作。
[0026] 所述S301定义的Driver、DriverFactory接口需要被驱动插件实现,定义的Template、TemplateFactory接口需要被模板插件实现,具体步骤如下:
[0027] S3011利用插件技术将DriverFactory和TemplateFactory实现类注册到导出工具主程序的DriverRegistry和TemplateRegistry中;
[0028] S3012利用DriverRegistry的变量driverFactories存储驱动工厂实现类;
[0029] S3013将存储的key值作为驱动工厂实现类的getHeader方法获取的值;
[0030] S3022利用TemplateRegistry的变量TemplateRegistry存储模板工厂实现类;
[0031] S3023将存储的key值作为模板工厂实现类的getHeader方法获取的值。
[0032] 所述S303导出命令参数,对输入的命令进行解析,终端导出工具完成对应数据库驱动插件和模板插件的加载的具体步骤如下:
[0033] S3031终端导出工具的DriverRegistry通过指定的协议头找出匹配的DriverFactory实现类;
[0034] S3032调用DriverFactory的creatDriver方法,创建连接数据库的驱动实例;
[0035] S3033调用Driver的createConnection方法创建数据库的连接实例;
[0036] S3034TemplateRegistry通过指定的协议头找出匹配的TemplateFactory实现类;
[0037] S3035调用TemplateFactory的createTemplate方法创建数据库的导出模板。
[0038] 本发明的有益效果为:本发明方法中涉及的的数据库导出工具主要分为三个部分,包括驱动管理系统、模板管理系统以及终端导出工具;其中,驱动管理系统的主要功能是提供驱动插件上传和下载服务,针对多平台数据库提供定制驱动插件开发,满足不同应用场景的需要;模板管理系统的主要功能是为导出操作提供不同的导出模板插件,以支持不同的数据导出类型;终端导出工具部分的主要功能是进行插件加载以及导出命令参数的解析,完成导出工作;
[0039] 本发明指出的数据库导出工具的驱动以及备份模板两部分将以插件形式与导出工具解耦,使得导出工具本身具有轻量化的特点;
[0040] 通过应用本发明方法,能够实现一个具有高效性、低成本、轻量化特性的数据库导出工具,同时该工具能够满足多源数据库的数据导出需求,具有高兼容、可灵活配置的特性,避免了多源数据库进行导出操作时的繁琐步骤。

附图说明

[0041] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0042] 图1是本发明方法的流程图;图2是本发明方法实施例的终端到处工具执行器工作流程图;图3是本发明实施例的驱动数据流转方向示意图。

具体实施方式

[0043] 下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
[0044] 实施例一:
[0045] 一种数据库数据导出工具的插件化实现方法,所述的方法具体步骤如下:
[0046] S1利用驱动管理系统对数据库的驱动程序插件进行维护,提供上传、更新及下载插件服务;
[0047] S2利用模板管理系统维护导出模板插件,提供上传、更新及下载插件的服务;
[0048] S3利用终端导出工具加载驱动插件和模板插件对数据库的数据进行导出;
[0049] 本发明涉及一种数据库数据导出工具的插件化实现方法,包括驱动管理系统、模板管理系统和终端导出工具三部分,其中驱动管理系统和模板管理系统由第一发明人负责统一运维管理,独立于终端导出工具,主要提供插件定制开发,已有插件迭代开发,插件上传和下载服务;在使用本发明方法时,首先按照S1利用驱动管理系统对数据库的驱动程序插件进行维护,提供上传、更新及下载插件服务;
[0050] 然后按照S2模板管理系统维护导出模板插件,提供上传、更新及下载插件的服务,[0051] 进一步的,所述S1利用驱动管理系统对连接需导出数据的数据库的驱动程序插件进行维护,提供上传、更新及下载插件服务,具体步骤如下:
[0052] S101将驱动管理系统提供的驱动插件以本地化方式存储;
[0053] S102将开发驱动插件接入导出工具驱动的统一接口;
[0054] S103根据url_header获取驱动的存放地址,下载驱动插件;
[0055] 首先按照S101通过Mysql数据库将驱动管理系统提供的驱动插件以本地化方式存储,开发人员按照S102通过将开发驱动插件接入导出工具驱动的统一接口,完成驱动插件开发,供普通用户和其他开发运维人员使用;使用人可以按照S103根据url_header获取驱动插件的存放地址,即可完成驱动插件的下载;
[0056] 再进一步的,所述S101将驱动管理系统提供的驱动插件以本地化方式存储的具体步骤如下:
[0057] S1011利用驱动管理系统所在本地数据库建立driver数据表;
[0058] S1012driver主键利用数据库连接协议头url_header以检索、更新驱动插件存储位置driver_address;
[0059] 数据表driver以数据库连接协议头url_header作为表driver主键,用来检索、更新驱动插件存储位置driver_address,将之放到导出工具的driver目录下,即可在导出工具使用时完成对该驱动插件的加载。
[0060] 实施例二:
[0061] 在实施例一的基础上,所述S2利用模板管理系统维护针对不同平台研发的导出模板插件,提供上传、更新及下载插件的服务的具体步骤如下:
[0062] S201将驱动管理系统提供的模板插件以本地化方式存储;
[0063] S202将开发模板插件接入导出模板的统一接口;
[0064] S203根据url_header获取模板的存放地址,下载模板插件;
[0065] 首先按照S201将驱动管理系统提供的模板插件通过Mysql数据库完成本地化方式存储,然后按照S202将所述模板管理系统所提供的模板插件由开发人员完成接入导出工具模板统一接口开发,完成驱动插件开发,供普通用户和其他开发或运维人员使用;最后普通用户按照S203根据url_header获取模板的存放地址,完成模板插件的下载;
[0066] 所述S201将驱动管理系统提供的模板插件以本地化方式存储的具体步骤如下:
[0067] S2011利用模板管理系统所在本地数据库建立template数据表;
[0068] S2012template主键利用数据库连接协议头url_header以检索、更新驱动插件存储位置template_address;
[0069] 数据表template以数据库连接协议头url_header作为表template主键,用来检索、更新驱动插件存储位置template_address;使用人可根据url_header获取模板插件的存放地址,完成模板插件的下载,将之放到导出工具的template目录下,即可在导出工具使用时完成对该模板插件的加载。
[0070] 实施例三:
[0071] 在实施例一或二的基础上,所述S3利用终端导出工具加载不同数据库源的相应驱动插件和模板插件对该数据库的数据进行导出,具体步骤如下:
[0072] S301定义Driver、DriverFactory接口和Template、TemplateFactory接口;
[0073] S302将驱动插件存放在driver目录下,将备份模板插件存放在template目录下;
[0074] S303导出命令参数,对输入的命令进行解析,终端导出工具完成对应数据库驱动插件和模板插件的加载;
[0075] S304终端导出工具内部执行器依据内置执行流程调用Template实例完成导出工作;
[0076] 首先所述终端导出工具按照S301定义需要被驱动插件实现的Driver、DriverFactory接口以及需要被模板插件实现的Template、TemplateFactory接口,普通用户将驱动插件按照S302存放至所述终端到处工具的driver目录下,将备份模板插件存放至所述终端导出工具的template目录下,接着按照S303导出命令参数,对输入的命令进行解析,终端导出工具完成对应数据库驱动插件和模板插件的加载;
[0077] 普通用户通过终端输入按照S303导出命令参数,终端导出工具对普通用户输入的命令进行解析,终端导出工具完成对相应数据库驱动插件和导出模板插件的加载,最后按照S304终端导出工具内部执行器依据内置执行流程调用Template实例完成导出工作;
[0078] 进一步的,所述S301定义的Driver、DriverFactory接口需要被驱动插件实现,定义的Template、TemplateFactory接口需要被模板插件实现,具体步骤如下:
[0079] S3011利用插件技术将DriverFactory和TemplateFactory实现类注册到导出工具主程序的DriverRegistry和TemplateRegistry中;
[0080] S3012利用DriverRegistry的变量driverFactories存储驱动工厂实现类;
[0081] S3013将存储的key值作为驱动工厂实现类的getHeader方法获取的值;
[0082] S3022利用TemplateRegistry的变量TemplateRegistry存储模板工厂实现类;
[0083] S3023将存储的key值作为模板工厂实现类的getHeader方法获取的值;
[0084] 再进一步的,所述S303导出命令参数,对输入的命令进行解析,终端导出工具完成对应数据库驱动插件和模板插件的加载的具体步骤如下:
[0085] S3031终端导出工具的DriverRegistry通过指定的协议头找出匹配的DriverFactory实现类;
[0086] S3032调用DriverFactory的creatDriver方法,创建连接数据库的驱动实例;
[0087] S3033调用Driver的createConnection方法创建数据库的连接实例;
[0088] S3034TemplateRegistry通过指定的协议头找出匹配的TemplateFactory实现类;
[0089] S3035调用TemplateFactory的createTemplate方法创建数据库的导出模板。
[0090] 当用户通过终端输入导出参数时,DriverRegistry通过指定的协议头找出匹配的DriverFactory实现类,再调用DriverFactory的creatDriver方法,创建连接数据库的驱动实例,再调用Driver的createConnection方法创建数据库的连接实例;同理TemplateRegistry通过指定的协议头找出匹配的TemplateFactory实现类,在调用TemplateFactory的createTemplate方法创建数据库的导出模板;然后终端导出工具执行器依据内置的执行流程调用Template实例完成导出工作;
[0091] 导出工具执行器,会持有Template和Driver两个接口的实例以及命令解析器解析的Config对象,首先通过Template的showSchemas方法传入Driver创建Connection对象获取当前需要导出数据库的所有模式,循环遍历模式列表,通过运行Template的showAllTable和showAllView方法获取所有数据表和视图以及根据Config的isNeedMeta判断是否导出元数据,如果为true,则通过Template的showCreateSchema方法获取元数据,再通过Wiriter写入文件,如果为false则无需将元数据写入文件,然后一次遍历视图列表和表列表,若isNeedMeta为true则通过运行Template的showCreateTable和showCreateView获取表以及视图的元数据,通过Writer写入文件,完成表的元数据的导出,若isNeedMeta为false,则无需导出元数据;在遍历表的时候,需运行Template的selectAllFromTable获取数据迭代器Result完成数据读取,再由Writer写入文件。
[0092] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。