CN110688378B - 数据库存储过程的迁移方法及系统 - Google Patents
数据库存储过程的迁移方法及系统 Download PDFInfo
- Publication number
- CN110688378B CN110688378B CN201910843507.6A CN201910843507A CN110688378B CN 110688378 B CN110688378 B CN 110688378B CN 201910843507 A CN201910843507 A CN 201910843507A CN 110688378 B CN110688378 B CN 110688378B
- Authority
- CN
- China
- Prior art keywords
- database
- statement
- data
- data processing
- name
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 243
- 238000013508 migration Methods 0.000 title claims abstract description 40
- 230000005012 migration Effects 0.000 title claims abstract description 40
- 238000012545 processing Methods 0.000 claims abstract description 124
- 238000006243 chemical reaction Methods 0.000 claims abstract description 15
- 238000004590 computer program Methods 0.000 claims description 10
- 238000004806 packaging method and process Methods 0.000 claims description 7
- 230000006870 function Effects 0.000 description 11
- 238000007689 inspection Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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/22—Indexing; Data structures therefor; Storage structures
-
- 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/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种数据库存储过程的迁移方法,包括步骤:获取第一数据库的第一存储过程、第一数据库的第一语法结构和第二数据库的第二语法结构;根据第一语法结构和第二语法结构将第一存储过程转换成第二数据库的第二存储过程;将第二存储过程封装到第二数据库中;获取第一数据库存储的第一数据,并将第一数据同步到第二数据库以得到第二数据;根据第二存储过程,对第二数据进行数据处理,并检验第二数据的处理结果。本发明实施例可以根据Hive数据库的存储过程语法结构将传统数据库的存储过程转换成Hive数据库的存储过程,然后根据Hive数据库中数据的处理结果检验存储过程转化的准确性,极大地提高了数据库存储过程的迁移效率。
Description
技术领域
本发明实施例涉及数据库技术领域,尤其涉及一种数据库存储过程的迁移方法、系统、计算机设备及计算机可读存储介质。
背景技术
随着大数据的普遍应用,越来越多的互联网公司在着手将传统的数据仓库结构迁移至大数据平台中。Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,而且Hive也是使用结构化查询语言(Structured Query Language,Sql),能够提供简单的Sql查询功能,还可以将Sql语句转换为MapReduce任务进行运行而现有大多数数据库都是基于MapReduce任务执行数据操作的。所以,对于传统数据仓库的管理者而言,可以通过类Sql语句在Hive数据仓库快速实现简单的MapReduce统计,不需要使用专门的MapReduce,学习成本低。因此,Hive数据仓库在大数据平台中应用最为广泛。
然而,Hive使用的类Sql语言为查询语言(Hibernate Query Language,Hql),而传统数据仓库例如Oracle的Sql语法和Hive的Sql语法存在很多差异,在传统的数据库中,可以使用Sql语言的Update、Delete语句方便地进行数据更新和数据删除,但是Hive并不支持Sql语言的Update、delete等语句直接进行数据更新、数据删除等操作。另外,Hive在进行数据更新、数据删除之后,不能进行回滚。因此传统数据仓库的存储过程需要人工转化后才能封装到Hive,需要耗费大量的时间和人力,所谓存储过程是一组为了完成特定功能的Sql语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。
本发明旨在解决由于Sql数据库的语法结构的差异性,不能将传统数据库的存储过程直接迁移至Sql数据库的问题。
发明内容
有鉴于此,本发明实施例提供了一种数据库存储过程的迁移方法、系统、计算机设备及计算机可读存储介质,能够对已有的存储过程进行转换,省却重新编写存储过程代码的工作,提高数据库存储过程的迁移效率。
为实现上述目的,本发明实施例提供了一种数据库存储过程的迁移方法,包括:
获取第一数据库的第一存储过程、所述第一数据库的第一语法结构和第二数据库的第二语法结构;
根据所述第一语法结构和所述第二语法结构将所述第一存储过程转换成所述第二数据库的第二存储过程;
将所述第二存储过程封装到所述第二数据库中;
获取所述第一数据库存储的第一数据,并将所述第一数据同步到所述第二数据库以得到第二数据;
根据所述第二存储过程,对所述第二数据进行数据处理,并检验所述第二数据的处理结果。
进一步的,所述获取第一数据库的第一存储过程、所述第一数据库的第一语法结构和第二数据库的第二语法结构的步骤,还包括:
接收用户输入的数据库登录信息,所述数据库登录信息至少包括所述第一数据库的物理地址、用户名和密码;
根据所述数据库登录信息登录到所述第一数据库,并从所述第一数据库获取所述第一存储过程的名称;
根据所述第一存储过程的名称获取所述第一存储过程的第一程序语句,所述第一程序语句至少包括:声明变量语句、初始化批次状态表语句、数据处理语句和更新批次状态表语句。
进一步的,所述根据所述第一语法结构和所述第二语法结构将所述第一存储过程转换成所述第二数据库的第二存储过程的步骤,还包括:
根据所述第一程序语句的第一语法结构获取所述第一程序语句的第一声明变量语句中的第一变量,并根据预设的变量类型对照表将所述第一变量转换成所述第二存储过程的第二变量,并根据所述第二变量生成所述第二程序语句的第二声明变量语句;
根据所述第一语法结构获取所述第一程序语句的第一初始化批次状态表语句,并根据所述第一初始化批次状态表语句生成所述第二存储过程的第二初始化批次状态表语句;
根据所述第一语法结构获取所述第一程序语句的第一数据处理语句,并根据所述第一数据处理语句生成所述第二存储过程的第二数据处理语句,所述第一数据处理语句至少包括第一更新数据处理语句和第一删除数据处理语句,所述第一更新数据处理语句至少包括第一目标表名称、更新表名称、对比字段名和记录名,所述第一删除数据处理语句至少包括第二目标表名称、目标表字段名和删除条件;
根据所述第一程序语句的第一语法结构获取所述第一程序语句的第一更新批次状态表语句,并根据所述第一更新批次状态表语句生成所述第二存储过程的第二更新批次状态表语句。
进一步的,所述根据所述第一程序语句的第一语法结构获取所述第一程序语句的第一数据处理语句,并根据所述第一数据处理语句生成所述第二存储过程的第二数据处理语句的步骤,还包括:
根据第一预设识别规则从所述第一数据处理语句中识别出所述第一目标表名称、所述更新表名称、所述对比字段名和所述记录名,并根据所述第一目标表名称、所述更新表名称、所述对比字段名和所述记录名生成所述第二更新数据处理语句;或者
根据第二预设识别规则从所述第一数据处理语句中识别出所述第二目标表名称、所述目标表字段名和所述删除条件,并根据所述第二目标表名称、所述目标表字段名和所述删除条件生成所述第二删除数据处理语句。
进一步的,所述获取所述第一数据库存储的第一数据,并将所述第一数据同步到所述第二数据库以得到第二数据的步骤,还包括:
获取所述第一数据库存储的第一数据的第一编码格式,并将所述第一编码格式转换成所述第二数据库的第二编码格式;及
获取所述第一数据库存储的第一数据的第一数据类型,并将所述第一数据类型转换成所述第二数据库的第二数据类型。
进一步的,所述根据所述第二存储过程,对所述第二数据进行数据处理,并检验所述第二数据的处理结果的步骤,还包括:
根据所述第一存储过程对所述第一数据库的第一数据进行处理,以获取第一数据处理结果,其中,所述第一数据处理结果至少包括:第一数据量和第一数据饱和度;
根据所述第二存储过程对所述第二数据库的第二数据进行处理,以获取第二数据处理结果,其中,所述第二数据处理结果至少包括:第二数据量和第二数据饱和度;
根据所述第一数据量和第一数据饱和度,对所述第二数据量和第二数据饱和度进行检验。
为了实现上述目的,本发明实施例还提供一种数据库存储过程的迁移系统,包括:
获取模块,用于获取第一数据库的第一存储过程、所述第一数据库的第一语法结构和第二数据库的第二语法结构;
转换模块,用于根据所述第一语法结构和所述第二语法结构将所述第一存储过程转换成所述第二数据库的第二存储过程;
封装模块,用于将所述第二存储过程封装到所述第二数据库中;
同步模块,获取所述第一数据库存储的第一数据,并将所述第一数据同步到所述第二数据库以得到第二数据;
检验模块,用于根据所述第二存储过程,对所述第二数据进行数据处理,并检验所述第二数据的处理结果。
为了实现上述目的,本发明实施例还提供一种计算机设备,所述计算机设备包括存储器、处理器以及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述数据库存储过程的迁移方法的步骤。
为了实现上述目的,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行如上所述的数据库存储过程的迁移方法的步骤。
本发明实施例提供的数据库存储过程的迁移方法、系统、计算机设备及计算机可读存储介质,可以获取第一数据库的第一存储过程并将第一存储过程转换成第二存储过程,还可以根据数据的处理结果对第二存储过程进行检验。由于可以根据所述第一语法结构和所述第二语法结构将所述第一存储过程转换成第二数据库的第二存储过程,省却了重新编写第一存储过程代码的工作,极大地提高了数据库存储过程的迁移效率。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
附图说明
图1为本发明实施例提供的数据库存储过程的迁移方法的步骤流程图;
图2为本发明实施例提供的数据库存储过程的迁移系统的程序模块示意图;
图3为本发明实施例提供的计算机设备的硬件结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
实施例一
请参阅图1,示出了本发明实施例一之数据库存储过程的迁移方法的步骤流程图。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。下面以计算机设备为执行主体进行示例性描述,具体如下:
步骤S100,获取第一数据库的第一存储过程、所述第一数据库的第一语法结构和第二数据库的第二语法结构。
具体的,首先获取用户输入的数据库登录信息,所述数据库登录信息至少包括第一数据库的物理地址、用户名、密码,所述用户名和密码用于登录所述第一数据库。因此,可以根据所述数据库登录信息连接并登录到所述第一数据库,获取封装在所述第一数据库中的第一存储过程的名称,然后根据所述名称获取所述第一存储过程,并将所述第一存储过程转换成所述第二存储过程。
需要说明的是,所述第一存储过程至少包括以下程序语句:声明变量语句,初始化批次状态表语句,数据处理语句,更新批次状态表语句,所述数据处理语句至少包括更新数据处理语句和删除数据处理语句。
步骤S102,根据所述第一语法结构和所述第二语法结构将所述第一存储过程转换成所述第二数据库的第二存储过程。
需要说明的是,所述第一数据库指的是使用Sql语言编写存储过程的传统数据库,例如Oracle;所述第二数据库指的是使用Hql语言编写存储过程的数据库,例如Hive。在所述第一数据库中,所述第一存储过程是使用Sql语言编写,而在所述第二数据库中,所述第二存储过程是通过类Sql语言(即Hql语言)编写。
示例性的,通过所述第一存储过程的名称获取所述第一存储过程的代码,并对所述代码的语句进行读取。在本实施例中,第一步,读取所述第一存储过程的变量声明语句,进一步识别出所述变量声明语句中的变量和变量类型,然后根据预设的变量类型对照表转换成Hql语言的变量声明语句。所述变量类型对照表是Sql变量类型与对应Hql变量类型的对照;例如,所述第一存储过程的变量声明语句为:a1 varchar(10),根据所述变量类型对照表转换成所述第二存储过程的变量声明语句:a1 string。所述变量声明是指对变量的类型和长度进行定义。
第二步,读取所述第一存储过程的初始化批次状态表语句,并将所述第一存储过程的初始化批次状态表语句转换成所述第二存储过程的初始化批次状态表语句。所述初始化批次状态表是指新建批次状态表,并定义所述批次状态表的状态值为1。所述批次状态表记录数据的处理过程,例如数据开始处理时,所述状态值为1;数据更新完成时,所述状态值为2;数据结束处理时,所述状态值为3。
第三步,读取所述第一存储过程的数据处理语句,在本实施例的应用场景一中,读取所述第一存储过程的update语句(即所述更新数据处理语句),进一步的,识别出所述update语句中的目标表名称、更新表名称、对比字段名、记录名,然后将所述更新数据处理语句转换成第二存储过程的更新数据处理语句。所述目标表是指需要更新的表,所述更新表是指用以更新目标表的表,所述字段是指一张表中的一列,所述记录是指一张表中的一行;所述第二存储过程的语句更新数据至少包括依次用于执行以下步骤的语句:新建表a,所述表a存储所述目标表的数据;新建表b(对应所述更新表),所述表b存储所述更新表的数据;新建表c,所述表c用以存储提取出来的数据;通过所述对比字段将所述表a与表b对比,将表b中不存在于表a的记录和表a中不存在于表b的记录提取出来,存储于表c;将所述表c覆盖表a。
在本实施例的应用场景二中,读取所述第一存储过程的delete语句(即所述删除数据处理语句),进一步的,识别出所述删除数据处理语句的目标表名称、目标表字段名、删除条件,例如目标表“table a”、目标表字段“date”、删除条件“date<20190101”,然后将所述第一存储过程的删除数据处理语句转换成第二存储过程的删除数据处理语句,所述第二存储过程的删除数据处理语句至少包括依次用于执行以下步骤的语句:新建表a,所述表a存储所述目标表的数据;新建表b;提取出表a中不符合删除条件的数据,所述数据存储于表b;将表b覆盖到表a。
第四步,读取所述第一存储过程的更新批次状态表语句,并将所述第一存储过程的更新批次状态表语句转换成所述第二存储过程的更新批次状态表语句。所述更新批次状态表语句用于对所述批次状态表的状态值进行更新。
步骤S104,将所述第二存储过程封装到所述第二数据库中。
示例性的,在步骤S102中由Sql语言转换成Hql语言得到的所述第二存储过程首先被缓存在预设的存储区域中,当所述第一存储过程全部转换成所述第二存储过程后,就会经过所述第二数据库的编译并封装到所述第二数据中。
步骤S106,获取所述第一数据库存储的第一数据,并将所述第一数据同步到所述第二数据库以得到第二数据。
具体的,连接到所述第一数据库,查询所述第一数据库中的表名称,然后获取所述表的信息,所述表的信息包括表结构、字段、字段值、数据量。接着,根据所述表结构在第二数据库建立新的表,然后将所述表的信息迁移到所述第二数据库的表中。
需要说明的是,所述第一数据在所述第一数据的编码格式为第一编码格式,例如UTF-8、gb2312、gbk;所述第二数据在所述第二数据库的编码格式为第二编码格式,例如textfile、sequencefile、rcfile。如果数据的编码格式不符合数据库的编码格式则会出现乱码。
在一较佳实施例中,在数据同步的过程中,将所述第一数据的第一编码格式转换成第二数据库的第二编码格式。具体的,在数据同步的时候插入一段自定义函数,所述自定义函数在所述数据同步时进行编码检验,筛选出不符合所述第二数据库要求的编码格式,然后将不符合要求的编码格式转换成第二数据库的编码格式。
需要说明的是,所述第一数据库的数据类型是多种多样的,例如有varchar、number、int、char等类型,而由于所述第二数据库版本的限制,所述第二数据库中不支持某些所述第一数据库的数据类型,例如char和date,因此需要对数据类型进行转换。
在另一较佳实施例中,将所述第一数据库的数据类型转换成所述第二数据库的数据类型。具体的,在数据同步的过程中,将所述第一数据的数据类型全部转换成String类型,以符合所述第二数据库的数据类型要求。
步骤S108,根据所述第二存储过程,对所述第二数据进行数据处理,并检验所述第二数据的处理结果。
具体的,根据所述第一存储过程对所述第一数据库的第一数据进行处理,以获取第一数据处理结果;根据所述第二存储过程对所述第二数据库的第二数据进行处理,以获取第二数据处理结果;然后根据所述第一数据处理结果,对所述第二数据处理结果进行检验。
示例性的,将所述第一数据库的第一数据同步到所述第二数据库,所述第一数据中包含有增量数据。在所述第一数据库中,使用所述第一存储过程对所述增量数据进行数据处理,得到结果表1;在所述第二数据库中,使用所述第二存储过程对所述增量数据进行数据更新处理,得到结果表2;然后根据结果表1对结果表2进行检验。具体的,根据数据量、数据饱和度、处理过程等关键信息进行检验,比较结果表1和结果表2的数据是否一致,比如通过检验数据量核对两边数据总量情况,通过检验所有列中的字段信息饱和程度比较数据一致性。
本发明实施例通过将一个数据库中的第一存储过程转换成另一个数据库中的第二存储过程,可以解决存储过程无法从传统数据库迁移到Hive数据库的问题,极大地提高了存储过程的迁移效率。
实施例二
请参阅图2,示出了本发明实施例二之数据库存储过程的迁移系统的程序模块示意图。在本实施例中,基于计算机设备的数据库存储过程的迁移系统20可以包括或被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本发明,并可实现上述数据库存储过程的迁移方法。本发明实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,比程序本身更适合于描述数据库存储过程的迁移系统20在存储介质中的执行过程。以下描述将具体介绍本实施例各程序模块的功能:
获取模块200,用于获取第一数据库的第一存储过程、所述第一数据库的第一语法结构和第二数据库的第二语法结构。
具体的,获取模块200首先获取用户输入的数据库登录信息,所述数据库登录信息至少包括第一数据库的物理地址、用户名、密码,所述用户名和密码用于登录所述第一数据库。因此,获取模块200可以根据所述数据库登录信息连接并登录到所述第一数据库,获取封装在所述第一数据库中的第一存储过程的名称,然后根据所述名称获取所述第一存储过程,并将所述第一存储过程转换成所述第二存储过程。
需要说明的是,所述第一存储过程至少包括以下程序语句:声明变量语句,初始化批次状态表语句,数据处理语句,更新批次状态表语句,所述数据处理语句至少包括更新数据处理语句和删除数据处理语句。
转换模块202,用于根据所述第一语法结构和所述第二语法结构将所述第一存储过程转换成所述第二数据库的第二存储过程。
需要说明的是,所述第一数据库指的是使用Hql语言编写存储过程的传统数据库,例如Oracle;所述第二数据库指的是使用Hql语言编写存储过程的数据库,例如Hive。在所述第一数据库中,所述第一存储过程是使用Sql语言编写,而在所述第二数据库中,所述第二存储过程是通过类Sql语言(即Hql语言)编写。
示例性的,所述获取模块200通过所述第一存储过程的名称获取所述第一存储过程的代码,并对所述代码的语句进行读取。在本实施例中,第一步,所述获取模块200读取所述第一存储过程的变量声明语句,进一步识别出所述变量声明语句中的变量和变量类型,然后所述转换模块202根据预设的变量类型对照表转换成Hql语言的变量声明语句。所述变量类型对照表是Sql变量类型与对应Hql变量类型的对照。例如,所述第一存储过程的变量声明语句为:a1varchar(10),根据所述变量类型对照表转换成所述第二存储过程的变量声明语句:a1 string。所述变量声明是指对变量的类型和长度进行定义。
第二步,所述转换模块202读取所述第一存储过程的初始化批次状态表语句,并将所述第一存储过程的初始化批次状态表语句转换成所述第二存储过程的初始化批次状态表语句。所述初始化批次状态表是指新建批次状态表,并定义所述批次状态表的状态值为1。所述批次状态表记录数据的处理过程,例如数据开始处理时,所述状态值为1;数据更新完成时,所述状态值为2;数据结束处理时,所述状态值为3。
第三步,所述转换模块202读取所述第一存储过程的数据处理语句,在本实施例的应用场景一中,所述转换模块202读取所述第一存储过程的update语句(即所述更新数据处理语句),进一步的,所述转换模块202识别出所述update语句中的目标表名称、更新表名称、对比字段名、记录名,然后将所述更新数据处理语句转换成第二存储过程的更新数据处理语句。所述目标表是指需要更新的表,所述更新表是指用以更新目标表的表,所述字段是指一张表中的一列,所述记录是指一张表中的一行;所述第二存储过程的语句更新数据至少包括依次用于执行以下步骤的语句:新建表a,所述表a存储所述目标表的数据;新建表b(对应所述更新表),所述表b存储所述更新表的数据;新建表c,所述表c用以存储提取出来的数据;通过所述对比字段将所述表a与表b对比,将表b中不存在于表a的记录和表a中不存在于表b的记录提取出来,存储于表c;将所述表c覆盖表a。
在本实施例的应用场景二中,所述转换模块202读取所述第一存储过程的delete语句(即所述删除数据处理语句),进一步的,所述转换模块202识别出所述删除数据处理语句的目标表名称、目标表字段名、删除条件,例如目标表“table a”、目标表字段“date”、删除条件“date<20190101”,然后将所述第一存储过程的删除数据处理语句转换成第二存储过程的删除数据处理语句,所述第二存储过程的删除数据处理语句至少包括依次用于执行以下步骤的语句:新建表a,所述表a存储所述目标表的数据;新建表b;提取出表a中不符合删除条件的数据,所述数据存储于表b;将表b覆盖到表a。
第四步,所述转换模块202读取所述第一存储过程的更新批次状态表语句,并将所述第一存储过程的更新批次状态表语句转换成所述第二存储过程的更新批次状态表语句。所述更新批次状态表语句用于对所述批次状态表的状态值进行更新。
封装模块204,用于将所述第二存储过程封装到所述第二数据库中。
示例性的,经过所述转换模块202由Sql语言转换成Hql语言得到的所述第二存储过程首先被缓存在预设的存储区域中,当所述第一存储过程全部转换成所述第二存储过程后,就会经过所述第二数据库的编译,由所述封装模块204封装到所述第二数据库中。
同步模块206,用于获取所述第一数据库存储的第一数据,并将所述第一数据同步到所述第二数据库以得到第二数据。
具体的,所述同步模块206连接到所述第一数据库,查询所述第一数据库中的表名称,然后获取所述表的信息,所述表的信息包括表结构、字段、字段值、数据量。接着,所述同步模块206根据所述表结构在第二数据库建立新的表,然后将所述表的信息迁移到所述第二数据库的表中。
需要说明的是,所述第一数据在所述第一数据库的编码格式为第一编码格式,例如UTF-8、gb2312、gbk;所述第二数据在所述第二数据库的编码格式为第二编码格式,例如textfile、sequencefile、rcfile。如果数据的编码格式不符合数据库的编码格式则会出现乱码。
在一较佳实施例中,在数据同步的过程中,当所述第一数据库的第一编码格式与所述第二数据库的第二编码格式不一致时,则所述同步模块206将所述第一数据的第一编码格式转换成第二数据库的第二编码格式。具体的,所述同步模块206在数据同步的时候插入一段自定义函数,所述自定义函数在所述数据同步时进行编码检验,筛选出不符合所述第二数据库要求的编码格式,然后将不符合要求的编码格式转换成第二数据库的编码格式。
需要说明的是,所述第一数据库的数据类型是多种多样的,例如有varchar、number、int、char等类型,而由于所述第二数据库版本的限制,所述第二数据库中不支持某些所述第一数据库的数据类型,例如char和date,因此需要对数据类型进行转换。
在另一较佳实施例中,在数据同步的过程中,当所述第一数据库的数据类型与所述第二数据库的数据类型不一致时,则所述同步模块206将所述第一数据库的数据类型转换成所述第二数据库的数据类型。具体的,在数据同步的过程中,所述同步模块206将所述第一数据的数据类型全部转换成String类型,以符合所述第二数据库的数据类型要求。
检验模块208,用于根据所述第二存储过程,对所述第二数据进行数据处理,并检验所述第二数据的处理结果。
具体的,所述检验模块208根据所述第一存储过程对所述第一数据库的第一数据进行处理,以获取第一数据处理结果;根据所述第二存储过程对所述第二数据库的第二数据进行处理,以获取第二数据处理结果;然后根据所述第一数据处理结果,对所述第二数据处理结果进行检验。
示例性的,所述检验模块208将所述第一数据库的第一数据同步到所述第二数据库,所述第一数据中包含有增量数据。在所述第一数据库中,所述检验模块208使用所述第一存储过程对所述增量数据进行数据处理,得到结果表1;在所述第二数据库中,所述检验模块208使用所述第二存储过程对所述增量数据进行数据更新处理,得到结果表2;然后所述检验模块208根据结果表1对结果表2进行检验。具体的,对数据量、数据饱和度、处理过程等关键信息进行检验,比较结果表1和结果表2的数据是否一致,比如通过检验数据量核对两边数据总量情况,通过检验所有列中的字段信息饱和程度比较数据一致性。
本发明实施例通过将一个数据库中的第一存储过程转换成另一个数据库中的第二存储过程,可以解决存储过程无法从传统数据库迁移到Hive数据库的问题,极大地提高了存储过程的迁移效率。
实施例三
参阅图3,是本发明实施例三之计算机设备的硬件架构示意图。本实施例中,所述计算机设备2是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。该计算机设备2可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图3所示,所述计算机设备2至少包括,但不限于,可通过系统总线相互通信连接存储器21、处理器22、网络接口23、以及数据库存储过程的迁移系统20。其中:
本实施例中,存储器21至少包括一种类型的计算机可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器21可以是计算机设备2的内部存储单元,例如该计算机设备2的硬盘或内存。在另一些实施例中,存储器21也可以是计算机设备2的外部存储设备,例如该计算机设备2上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器21还可以既包括计算机设备2的内部存储单元也包括其外部存储设备。本实施例中,存储器21通常用于存储安装于计算机设备2的操作系统和各类应用软件,例如实施例二的数据库存储过程的迁移系统20的程序代码等。此外,存储器21还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器22在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器22通常用于控制计算机设备2的总体操作。本实施例中,处理器22用于运行存储器21中存储的程序代码或者处理数据,例如运行数据库存储过程的迁移系统20,以实现实施例一的数据库存储过程的迁移方法。
所述网络接口23可包括无线网络接口或有线网络接口,该网络接口23通常用于在所述计算机设备2与其他电子装置之间建立通信连接。例如,所述网络接口23用于通过网络将所述计算机设备2与外部终端相连,在所述计算机设备2与外部终端之间的建立数据传输通道和通信连接等。所述网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of Mobile communication,GSM)、宽带码分多址(WidebandCode Division Multiple Access,WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
需要指出的是,图3仅示出了具有部件20-23的计算机设备2,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
在本实施例中,存储于存储器21中的所述数据库存储过程的迁移方法系统20还可以被分割为一个或者多个程序模块,所述一个或者多个程序模块被存储于存储器21中,并由一个或多个处理器(本实施例为处理器22)所执行,以完成本发明。
例如,图2示出了所述实现数据库存储过程的迁移系统20实施例二的程序模块示意图,该实施例中,所述基于数据库存储过程的迁移系统20可以被划分为获取模块200、转换模块202、封装模块204、同步模块206、检验模块208。其中,本发明所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,比程序更适合于描述所述数据库存储过程的迁移系统20在所述计算机设备2中的执行过程。所述程序模块200-208的具体功能在实施例二中已有详细描述,在此不再赘述。
实施例四
本实施例还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,程序被处理器执行时实现相应功能。本实施例的计算机可读存储介质用于存储数据库存储过程的迁移系统20,被处理器执行时实现实施例一的数据库存储过程的迁移方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (8)
1.一种数据库存储过程的迁移方法,其特征在于,包括:
获取第一数据库的第一存储过程、所述第一数据库的第一语法结构和第二数据库的第二语法结构;根据所述第一存储过程的名称获取所述第一存储过程的第一程序语句,所述第一程序语句至少包括:声明变量语句、初始化批次状态表语句、数据处理语句和更新批次状态表语句;
根据所述第一语法结构和所述第二语法结构将所述第一存储过程转换成所述第二数据库的第二存储过程;
将所述第二存储过程封装到所述第二数据库中;
获取所述第一数据库存储的第一数据,并将所述第一数据同步到所述第二数据库以得到第二数据;
根据所述第二存储过程,对所述第二数据进行数据处理,并检验所述第二数据的处理结果;
其中,所述根据所述第一语法结构和所述第二语法结构将所述第一存储过程转换成所述第二数据库的第二存储过程的步骤,还包括:
根据所述第一语法结构获取所述第一程序语句的第一声明变量语句中的第一变量,并根据预设的变量类型对照表将所述第一变量转换成所述第二存储过程的第二变量,并根据所述第二变量生成第二程序语句的第二声明变量语句;
根据所述第一语法结构获取所述第一程序语句的第一初始化批次状态表语句,并根据所述第一初始化批次状态表语句生成所述第二存储过程的第二初始化批次状态表语句;
根据所述第一语法结构获取所述第一程序语句的第一数据处理语句,并根据所述第一数据处理语句生成所述第二存储过程的第二数据处理语句,所述第一数据处理语句至少包括第一更新数据处理语句和第一删除数据处理语句,所述第一更新数据处理语句至少包括第一目标表名称、更新表名称、对比字段名和记录名,所述第一删除数据处理语句至少包括第二目标表名称、目标表字段名和删除条件;
根据所述第一语法结构获取所述第一程序语句的第一更新批次状态表语句,并根据所述第一更新批次状态表语句生成所述第二存储过程的第二更新批次状态表语句;
其中,所述根据所述第一语法结构获取所述第一程序语句的第一数据处理语句,并根据所述第一数据处理语句生成所述第二存储过程的第二数据处理语句的步骤,还包括:
根据第一预设识别规则从所述第一数据处理语句中识别出所述第一目标表名称、所述更新表名称、所述对比字段名和所述记录名,并根据所述第一目标表名称、所述更新表名称、所述对比字段名和所述记录名生成第二更新数据处理语句;或者
根据第二预设识别规则从所述第一数据处理语句中识别出所述第二目标表名称、所述目标表字段名和所述删除条件,并根据所述第二目标表名称、所述目标表字段名和所述删除条件生成第二删除数据处理语句。
2.根据权利要求1所述的数据库存储过程的迁移方法,其特征在于,所述获取第一数据库的第一存储过程、所述第一数据库的第一语法结构和第二数据库的第二语法结构的步骤,包括:
接收用户输入的数据库登录信息,所述数据库登录信息至少包括所述第一数据库的物理地址、用户名和密码;
根据所述数据库登录信息登录到所述第一数据库,并从所述第一数据库获取所述第一存储过程的名称。
3. 根据权利要求1所述的数据库存储过程的迁移方法,其特征在于,所述获取所述第一数据库存储的第一数据,并将所述第一数据同步到所述第二数据库以得到第二数据的步骤,还包括:
获取所述第一数据库存储的第一数据的第一编码格式,并将所述第一编码格式转换成所述第二数据库的第二编码格式;及
获取所述第一数据库存储的第一数据的第一数据类型,并将所述第一数据类型转换成所述第二数据库的第二数据类型。
4.根据权利要求1所述的数据库存储过程的迁移方法,其特征在于,所述根据所述第二存储过程,对所述第二数据进行数据处理,并检验所述第二数据的处理结果的步骤,还包括:
根据所述第一存储过程对所述第一数据库的第一数据进行处理,以获取第一数据处理结果,其中,所述第一数据处理结果至少包括:第一数据量和第一数据饱和度;
根据所述第二存储过程对所述第二数据库的第二数据进行处理,以获取第二数据处理结果,其中,所述第二数据处理结果至少包括:第二数据量和第二数据饱和度;
根据所述第一数据量和第一数据饱和度,对所述第二数据量和第二数据饱和度进行检验。
5.一种数据库存储过程的迁移系统,其特征在于,包括:
获取模块,用于获取第一数据库的第一存储过程、所述第一数据库的第一语法结构和第二数据库的第二语法结构;所述获取模块还用于:根据所述第一存储过程的名称获取所述第一存储过程的第一程序语句,所述第一程序语句至少包括:声明变量语句、初始化批次状态表语句、数据处理语句和更新批次状态表语句;
转换模块,用于根据所述第一语法结构和所述第二语法结构将所述第一存储过程转换成所述第二数据库的第二存储过程;
封装模块,用于将所述第二存储过程封装到所述第二数据库中;
同步模块,获取所述第一数据库存储的第一数据,并将所述第一数据同步到所述第二数据库以得到第二数据;
检验模块,用于根据所述第二存储过程,对所述第二数据进行数据处理,并检验所述第二数据的处理结果;
其中,转换模块还用于:
根据所述第一语法结构获取所述第一程序语句的第一声明变量语句中的第一变量,并根据预设的变量类型对照表将所述第一变量转换成所述第二存储过程的第二变量,并根据所述第二变量生成第二程序语句的第二声明变量语句;
根据所述第一语法结构获取所述第一程序语句的第一初始化批次状态表语句,并根据所述第一初始化批次状态表语句生成所述第二存储过程的第二初始化批次状态表语句;
根据所述第一语法结构获取所述第一程序语句的第一数据处理语句,并根据所述第一数据处理语句生成所述第二存储过程的第二数据处理语句,所述第一数据处理语句至少包括第一更新数据处理语句和第一删除数据处理语句,所述第一更新数据处理语句至少包括第一目标表名称、更新表名称、对比字段名和记录名,所述第一删除数据处理语句至少包括第二目标表名称、目标表字段名和删除条件;
根据所述第一语法结构获取所述第一程序语句的第一更新批次状态表语句,并根据所述第一更新批次状态表语句生成所述第二存储过程的第二更新批次状态表语句;
其中,所述转换模块还用于:
根据第一预设识别规则从所述第一数据处理语句中识别出所述第一目标表名称、所述更新表名称、所述对比字段名和所述记录名,并根据所述第一目标表名称、所述更新表名称、所述对比字段名和所述记录名生成第二更新数据处理语句;或者
根据第二预设识别规则从所述第一数据处理语句中识别出所述第二目标表名称、所述目标表字段名和所述删除条件,并根据所述第二目标表名称、所述目标表字段名和所述删除条件生成第二删除数据处理语句。
6.根据权利要求5所述数据库存储过程的迁移系统,其特征在于,所述获取模块还用于:
接收用户输入的数据库登录信息,所述数据库登录信息至少包括所述第一数据库的物理地址、用户名和密码;
根据所述数据库登录信息登录到所述第一数据库,并从所述第一数据库获取所述第一存储过程的名称。
7.一种计算机设备,所述计算机设备包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征于,所述处理器执行所述计算机程序时实现如权利要求1至4任一项所述的数据库存储过程的迁移方法的步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行如权利要求1至4中任一项所述的数据库存储过程的迁移方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910843507.6A CN110688378B (zh) | 2019-09-06 | 2019-09-06 | 数据库存储过程的迁移方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910843507.6A CN110688378B (zh) | 2019-09-06 | 2019-09-06 | 数据库存储过程的迁移方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110688378A CN110688378A (zh) | 2020-01-14 |
CN110688378B true CN110688378B (zh) | 2024-05-24 |
Family
ID=69108851
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910843507.6A Active CN110688378B (zh) | 2019-09-06 | 2019-09-06 | 数据库存储过程的迁移方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110688378B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111353279A (zh) * | 2020-03-04 | 2020-06-30 | 海南金盘智能科技股份有限公司 | 字符编码的转换方法、装置和计算机存储介质 |
CN111708755A (zh) * | 2020-05-20 | 2020-09-25 | 北京奇艺世纪科技有限公司 | 数据迁移方法、装置、系统、电子设备以及可读存储介质 |
CN112328260A (zh) * | 2020-11-16 | 2021-02-05 | 中国平安财产保险股份有限公司 | 基于大数据平台的sql语句转换方法、装置和计算机设备 |
CN112579570B (zh) * | 2020-12-16 | 2023-06-23 | 中国辐射防护研究院 | 一种核环境数据存储方法和装置 |
CN112612848B (zh) * | 2020-12-17 | 2023-05-02 | 四川虹微技术有限公司 | 数据实时同步的方法及装置、系统、电子设备、存储介质 |
CN113626407A (zh) * | 2021-07-30 | 2021-11-09 | 浪潮云信息技术股份公司 | 一种语法转换迁移方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103440273A (zh) * | 2013-08-06 | 2013-12-11 | 北京航空航天大学 | 一种数据跨平台迁移方法及装置 |
CN109284281A (zh) * | 2018-09-10 | 2019-01-29 | 北京百度网讯科技有限公司 | 用于迁移数据的方法和装置 |
CN109684389A (zh) * | 2018-08-31 | 2019-04-26 | 深圳壹账通智能科技有限公司 | 数据表结构的转换方法、装置、设备及可读存储介质 |
CN109992595A (zh) * | 2019-04-11 | 2019-07-09 | 北京启迪区块链科技发展有限公司 | 异构数据库转换方法、装置、设备和存储介质 |
-
2019
- 2019-09-06 CN CN201910843507.6A patent/CN110688378B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103440273A (zh) * | 2013-08-06 | 2013-12-11 | 北京航空航天大学 | 一种数据跨平台迁移方法及装置 |
CN109684389A (zh) * | 2018-08-31 | 2019-04-26 | 深圳壹账通智能科技有限公司 | 数据表结构的转换方法、装置、设备及可读存储介质 |
CN109284281A (zh) * | 2018-09-10 | 2019-01-29 | 北京百度网讯科技有限公司 | 用于迁移数据的方法和装置 |
CN109992595A (zh) * | 2019-04-11 | 2019-07-09 | 北京启迪区块链科技发展有限公司 | 异构数据库转换方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110688378A (zh) | 2020-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110688378B (zh) | 数据库存储过程的迁移方法及系统 | |
CN109558575B (zh) | 在线表格编辑方法、装置、计算机设备及存储介质 | |
CN110941546A (zh) | Web页面用例的自动化测试方法、装置、设备及存储介质 | |
CN111444455B (zh) | 浏览器兼容方法、系统、计算机设备及存储介质 | |
CN112039900B (zh) | 网络安全风险检测方法、系统、计算机设备和存储介质 | |
CN112615759B (zh) | 全链路压测组件、全链路压测方法及装置 | |
CN105786998A (zh) | 数据库中间件系统及利用其处理数据的方法 | |
CN111125598A (zh) | 数据智能查询方法、装置、设备及存储介质 | |
CN105224544A (zh) | 一种数据库的数据编辑方法及装置 | |
CN112328631A (zh) | 一种生产故障分析方法、装置、电子设备及存储介质 | |
CN110674109A (zh) | 数据导入方法、系统、计算机设备及计算机可读存储介质 | |
CN117349267B (zh) | 一种数据库迁移处理方法及系统 | |
CN110502482B (zh) | 用户操作界面配置方法、系统及数据操作方法 | |
CN112416957A (zh) | 基于数据模型层的数据增量更新方法、装置及计算机设备 | |
CN111562907A (zh) | 自定义接口数据的转换方法与系统 | |
CN117520309A (zh) | 一种跨数据库类型的数据迁移方法、装置 | |
CN105094787B (zh) | 企业互联网应用的处理方法及装置 | |
CN108984757A (zh) | 一种数据导入方法及设备 | |
CN107609068B (zh) | 一种数据无感迁移方法 | |
CN113868138A (zh) | 测试数据的获取方法、系统、设备及存储介质 | |
CN113239016A (zh) | 数据库设计辅助装置和方法 | |
CN108073584B (zh) | 一种数据处理方法及服务器 | |
CN114817124A (zh) | 多核微控制器间映射方法、设备及计算机可读存储介质 | |
CN112597233B (zh) | 数据指标的批量处理方法、装置、设备及存储介质 | |
CN116501744B (zh) | 仿真数据的自动化建表与入库方法、装置和计算机设备 |
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 | ||
GR01 | Patent grant |