一种数据源的迁移方法及系统技术方案

技术编号:20484702 阅读:24 留言:0更新日期:2019-03-02 18:54
本发明专利技术实施例提供一种数据源的迁移方法及系统。方法包括:获取待迁移数据源的存储过程,所述存储过程包括1个或多个SQL语句;对所述SQL语句进行解析,生成各SQL语句对应的java语法,所述java语法为目标数据库可识别的语法;根据对所述java语法将所述待迁移数据源存储至所述目标数据库。系统用于执行上述方法。本发明专利技术实施例通过获取待迁移数据源的存储过程,对存储过程中的SQL语句进行解析,生成对应的java语法,然后根据java语法对待迁移数据源进行存储,即便在底层数据存储变更后,存储过程业务代码仍然可以平稳过度到目标数据库中,减少二次开发所需的时间和成本。

【技术实现步骤摘要】
一种数据源的迁移方法及系统
本专利技术涉及数据库
,具体而言,涉及一种数据源的迁移方法及系统。
技术介绍
随着大数据时代的到来,传统的关系型数据库已经满足不了众多企业的需求,因此越来越多的企业需要将在传统的关系型数据库中存储的数据迁移到大数据平台中。其中,存储过程(StoredProcedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。SQL本身是一种结构化查询语言,加上了一些控制(赋值、循环和异常处理等),但不是面向对象的,本质上还是过程化的,面对复杂的业务逻辑,过程化的处理会很吃力。另外,存储过程依赖特定的数据库,在大数据和开源环境下,无法移植到其他开源存储,存储一旦变更,原来的存储过程代码全部重写,无法复用,这给大数据环境下数据业务迁移带来了很大的工作量,从而增加了数据源迁移的时间和成本。
技术实现思路
有鉴于此,本专利技术实施例的目的在于提供一种数据源的迁移方法及系统,以解决上述对数据源迁移所需大量的时间和成本的技术问题。第一方面,本专利技术实施例提供了一种数据源的迁移方法,包括:获取待迁移数据源的存储过程,所述存储过程包括1个或多个SQL语句;对所述SQL语句进行解析,生成各SQL语句对应的java语法,所述java语法为目标数据库可识别的语法;根据对所述java语法将所述待迁移数据源存储至所述目标数据库。进一步地,所述方法,还包括:从目标数据库中获取所述待迁移数据源的存储结果,并通过JDBC协议将所述存储结果返回至客户端,其中,所述存储结果包括排序结果、聚合结果和结果集中的任意一个或其组合。进一步地,所述对所述SQL语句进行解析,包括:解析所述SQL语句,获取所述SQL语句中的关键字;将每个关键字封装成对应的中间对象;将每个中间对象转换成所述java语法。进一步地,在生成各SQL语句对应的java语法之后,所述方法,还包括:对所述java语法的性能进行优化处理。进一步地,在生成各SQL语句对应的java语法之后,所述方法,还包括:根据所述java语法生成对应的二进制代码,并将所述二进制代码序列化到在磁盘中,以及缓存到内存中。进一步地,所述对所述SQL语句进行解析,包括:利用ANTLR4的解析工具和visitor的解析方式对所述SQL语句进行解析。进一步地,在将所述二进制代码序列化到在磁盘中之后,所述方法,还包括:若系统初始化,则从所述磁盘中对所述二进制代码进行反序列化操作,并将反序列化后的二进制代码缓存到所述内存中。第二方面,本专利技术实施例提供了一种数据源的迁移系统,包括:获取模块,用于获取待迁移数据源的存储过程,所述存储过程包括1个或多个SQL语句;解析模块,用于对所述SQL语句进行解析,生成各SQL语句对应的java语法,所述java语法为目标数据库可识别的语法;存储模块,用于根据对所述java语法将所述待迁移数据源存储至所述目标数据库。第三方面,本专利技术实施例提供一种电子设备,包括:处理器、存储器和总线,其中,所述处理器和所述存储器通过所述总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行第一方面的方法步骤。第四方面,本专利技术实施例提供一种非暂态计算机可读存储介质,包括:所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行第一方面的方法步骤。本专利技术实施例通过获取待迁移数据源的存储过程,对存储过程中的SQL语句进行解析,生成对应的java语法,然后根据java语法对待迁移数据源进行存储,即便在底层数据存储变更后,存储过程业务代码仍然可以平稳过度到目标数据库中,减少二次开发所需的时间和成本。本专利技术的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本专利技术实施例了解。本专利技术的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。附图说明为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本专利技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。图1为本专利技术实施例提供一种数据源的迁移方法流程示意图;图2为本专利技术另一实施例提供的一种数据源的迁移方法流程示意图;图3为本专利技术实施例提供的原始数据库的部分存储过程代码示意图;图4为本专利技术实施例提供的解析后获得的java语法的代码示意图;图5为本专利技术实施例提供的一种数据源的迁移系统结构示意图;图6为本专利技术实施例提供的电子设备实体结构示意图。具体实施方式下面将结合本专利技术实施例中附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本专利技术实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本专利技术的实施例的详细描述并非旨在限制要求保护的本专利技术的范围,而是仅仅表示本专利技术的选定实施例。基于本专利技术的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本专利技术保护的范围。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本专利技术的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。图1为本专利技术实施例提供一种数据源的迁移方法流程示意图,如图1所示,该方法包括:步骤101:获取待迁移数据源的存储过程,所述存储过程包括1个或多个SQL语句。在具体的实施过程中,在对待迁移数据源进行迁移之前,客户端根据JDBC协议与该系统建立连接并创建存储过程,存储过程创建完成后,客户端可以对存储过程发起调用。系统首先获取待迁移数据的存储过程,其中,存储过程中包括一个或多个SQL语句。步骤102:对所述SQL语句进行解析,生成各SQL语句对应的java语法,所述java语法为目标数据库可识别的语法。在具体的实施过程中,系统对数据源的存储过程进行解析,在解析之前,需要确定数据源采用哪个数据库厂商的SQL语法规则,例如该数据源可以是ORACLE数据库的PL-SQL语法规则;确定解析工具,完成对PL-SQL语法及词法定义,解析工具可以采用ANTLR4;解析方式的确定,且解析方式可以采用visitor的遍历模式。在解析时分别对存储过程中的每一个SQL语句进行解析,生成每个SQL语句对应的java语法。如果生成的java语法是目标数据库不能识别的,则需要对java语法进行方言转换,若目标数据库可识别的语法包括hive、phoenix和mysql,则应当将SQL语句分别转换成hive、phoenix和mysql。应当说明的是,在转换过程中,包括了数据类型转换、函数转换和特殊语法转换。应当说明的是,ANTLR4解析语言熟练程度,能决定后续存储过程解析的开发效率和质量保证。ANTLR是用JAV本文档来自技高网...

【技术保护点】
1.一种数据源的迁移方法,其特征在于,包括:获取待迁移数据源的存储过程,所述存储过程包括1个或多个SQL语句;对所述SQL语句进行解析,生成各SQL语句对应的java语法,所述java语法为目标数据库可识别的语法;根据对所述java语法将所述待迁移数据源存储至所述目标数据库。

【技术特征摘要】
1.一种数据源的迁移方法,其特征在于,包括:获取待迁移数据源的存储过程,所述存储过程包括1个或多个SQL语句;对所述SQL语句进行解析,生成各SQL语句对应的java语法,所述java语法为目标数据库可识别的语法;根据对所述java语法将所述待迁移数据源存储至所述目标数据库。2.根据权利要求1所述的方法,其特征在于,所述方法,还包括:从目标数据库中获取所述待迁移数据源的存储结果,并通过JDBC协议将所述存储结果返回至客户端,其中,所述存储结果包括排序结果、聚合结果和结果集中的任意一个或其组合。3.根据权利要求1所述的方法,其特征在于,所述对所述SQL语句进行解析,包括:解析所述SQL语句,获取所述SQL语句中的关键字;将每个关键字封装成对应的中间对象;将每个中间对象转换成所述java语法。4.根据权利要求1所述的方法,其特征在于,在生成各SQL语句对应的java语法之后,所述方法,还包括:对所述java语法的性能进行优化处理。5.根据权利要求1所述的方法,其特征在于,在生成各SQL语句对应的java语法之后,所述方法,还包括:根据所述java语法生成对应的二进制代码,并将所述二进制代码序列化到在磁盘中,以及缓存到内存中。6.根据权利要...

【专利技术属性】
技术研发人员:廖伟王纯斌易祖建张奇
申请(专利权)人:成都四方伟业软件股份有限公司
类型:发明
国别省市:四川,51

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

1