CN111078273B - 一种信息获取方法及装置、存储介质 - Google Patents
一种信息获取方法及装置、存储介质 Download PDFInfo
- Publication number
- CN111078273B CN111078273B CN201911250006.3A CN201911250006A CN111078273B CN 111078273 B CN111078273 B CN 111078273B CN 201911250006 A CN201911250006 A CN 201911250006A CN 111078273 B CN111078273 B CN 111078273B
- Authority
- CN
- China
- Prior art keywords
- script file
- database
- statement
- database script
- formatted
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/35—Clustering; Classification
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种信息获取方法及装置、存储介质,该方法包括:获取同一数据库的第一数据库脚本文件和第二数据库脚本文件;第二数据库脚本文件为对第一数据库脚本文件进行修改后生成的脚本文件;分别对第一数据库脚本文件和第二数据库脚本文件进行格式化,生成格式化后的第一数据库脚本文件、格式化后的第二数据库脚本文件;格式化后的第一数据库脚本文件和格式化后的第二数据库脚本文件均以语句为单位存储数据库脚本;按照预设分类信息,对格式化后的第一数据库脚本文件和格式化后的第二数据库脚本文件进行语句分类,得到至少一类语句;对至少一类语句中的每一类语句进行差异提取,生成差异数据库脚本文件。
Description
技术领域
本发明实施例涉及计算机数据库领域,尤其涉及一种信息获取方法及装置、存储介质。
背景技术
在现有的应用程序开发过程中,根据一个应用程序所需的数据,生成数据库脚本文件,执行该数据库脚本文件为该应用程序创建存储数据的数据库,当应用程序所需的数据发生变化时,适应性修改该数据库脚本文件,得到修改后的数据库脚本文件并执行,实现更新该应用程序的数据库;由于更新数据库也会影响应用程序的使用,为了验证数据库更新产生的影响,往往通过人工比较修改前的数据库脚本文件和修改后的数据库脚本文件,得到变化的数据库脚本文件,进而在该数据库中执行变化的数据库脚本文件,验证数据库更新对应用产生的影响。
在实现本发明过程中,发明人发现通过由人工对比两个数据库脚本文件,并编写变化的数据库脚本文件,由于数据库脚本文件记录有大量语句,人工需要对上述大量语句进行对比,可能存在疏漏,并且,人工对比确定出变化的语句后,还要根据变化的语句编写变化的数据库脚本文件,步骤繁琐增加了耗时,也就是说,上述方案降低了变化的数据库脚本文件的获取速度和准确度。
发明内容
本发明的主要目的在于提出一种信息获取方法及装置、存储介质,提高了变化的数据库脚本文件的获取速度和准确度。
本发明的技术方案是这样实现的:
本发明实施例提供了一种信息获取方法,所述方法包括:
获取同一数据库的第一数据库脚本文件和第二数据库脚本文件;所述第二数据库脚本文件为对所述第一数据库脚本文件进行修改后生成的脚本文件;
分别对所述第一数据库脚本文件和所述第二数据库脚本文件进行格式化,生成格式化后的第一数据库脚本文件、格式化后的第二数据库脚本文件;所述格式化后的第一数据库脚本文件和所述格式化后的第二数据库脚本文件均以语句为单位存储数据库脚本;
按照预设分类信息,对所述格式化后的第一数据库脚本文件和所述格式化后的第二数据库脚本文件进行语句分类,得到至少一类语句;
对所述至少一类语句中的每一类语句进行差异提取,生成差异数据库脚本文件。
上述方案中,所述预设分类信息包括操作函数前缀和操作类型前缀;所述按照预设分类信息,对所述格式化后的第一数据库脚本文件和所述格式化后的第二数据库脚本文件进行语句分类,得到至少一类语句,包括:
按照所述操作函数前缀和所述操作类型前缀,对所述格式化后的第一数据库脚本文件中的语句和所述格式化后的第二数据库脚本文件中的语句进行比较分类,得到所述至少一类语句;所述至少一类语句中的每一类语句对应同一个操作函数前缀和同一个操作类型前缀。
上述方案中,所述对所述至少一类语句中的每一类语句进行差异提取,生成差异数据库脚本文件,包括:
当所述每一类语句包括一个语句时,根据预设修改规则,生成所述每一类语句对应的一个差异语句;
当所述每一类语句包括两个语句时,根据所述预设修改规则,对所述两个语句进行字段对比和差异提取,生成所述每一类语句对应的一个差异语句;进而生成所述至少一类语句对应的至少一个差异语句;
由所述至少一个差异语句,组成所述差异数据库脚本文件。
上述方案中,所述对所述至少一类语句中的每一类语句进行差异提取,生成差异数据库脚本文件,包括:
当所述每一类语句包括一个语句时,根据预设修改规则,生成所述每一类语句对应的差异语句;
当所述每一类语句包括至少两个语句时,将所述至少两个语句中前缀相同的、且所属脚本文件不同的语句划分为一组,得到至少一组语句;
当所述至少一组语句中每组语句包括一个语句时,根据所述预设修改规则,生成所述每组语句对应的一个差异语句;
当所述至少一组语句中每组语句包括两个语句时,根据所述预设修改规则,对所述每组语句中的两个语句进行字段对比和差异提取,生成所述每组语句对应的一个差异语句;并根据所述每组语句对应的一个差异语句,生成所述每一类语句对应的至少一个差异语句;
根据所述每一类语句对应的差异语句,生成所述差异数据库脚本文件。
上述方案中,所述第一数据库脚本文件为所述数据库对应的完整脚本文件,所述第二数据库脚本文件为对所述完整脚本文件进行修改后的更新脚本文件;
或者,所述第一数据库脚本文件为用于修改数据库的修改脚本文件,所述第二数据脚本文件为对所述修改脚本文件进行迭代修改后的迭代修改脚本文件。
上述方案中,所述差异数据库脚本文件包括更改差异数据库脚本文件,所述更改差异数据库脚本文件表征更改数据库的表结构的脚本文件;在所述获取同一数据库的第一数据库脚本文件和第二数据库脚本文件之后,所述方法还包括:
当所述第一数据库脚本文件为数据库对应的完整脚本文件,且所述第二数据库脚本文件为对所述完整脚本文件进行修改后的更新脚本文件时,分别对所述完整脚本文件和所述更新脚本文件进行格式化,生成格式化后的完整脚本文件、格式化后的更新脚本文件;所述格式化后的完整脚本文件和所述格式化后的更新脚本文件均以语句为单位存储数据库脚本;
对所述格式化后的完整脚本文件中的数据定义语言和所述格式化后的更新脚本文件中的数据定义语言进行比较和表结构差异提取,生成所述更新差异数据库脚本文件。
上述方案中,所述分别对所述第一数据库脚本文件和所述第二数据库脚本文件进行格式化,生成格式化后的第一数据库脚本文件、格式化后的第二数据库脚本文件,包括:
对所述第一数据库脚本文件进行语句分析和拆分,生成所述格式化的第一数据库脚本文件;
对所述第二数据库脚本文件进行语句分析和拆分,生成所述格式化的第二数据库脚本文件。
上述方案中,在所述获取同一数据库的第一数据库脚本文件和第二数据库脚本文件之后,所述方法还包括:
分别对所述第一数据库脚本文件和所述第二数据库脚本文件进行格式化,当所述第一数据库脚本文件和/或所述第二数据库脚本文件格式化出错时,生成错误提示信息,所述错误提示信息表征所述第一数据库脚本文件和/或所述第二数据库脚本文件存在语法错误。
上述方案中,所述获取同一数据库的第一数据库脚本文件和第二数据库脚本文件,包括:
当接收到查询指令时,响应于所述查询指令,弹出文件获取界面,在所述文件获取界面上显示第一输入接口和第二输入接口;
通过所述第一输入接口获取所述第一数据库脚本文件;
通过所述第二输入接口获取所述第二数据库脚本文件。
本发明实施例提供了一种信息获取装置,所述装置包括:
获取模块,用于获取同一数据库的第一数据库脚本文件和第二数据库脚本文件;所述第二数据库脚本文件为对所述第一数据库脚本文件进行修改后生成的脚本文件;
格式化模块,用于分别对所述第一数据库脚本文件和所述第二数据库脚本文件进行格式化,生成格式化后的第一数据库脚本文件、格式化后的第二数据库脚本文件;所述格式化后的第一数据库脚本文件和所述格式化后的第二数据库脚本文件均以语句为单位存储数据库脚本;
语句分类模块,用于按照预设分类信息,对所述格式化后的第一数据库脚本文件和所述格式化后的第二数据库脚本文件进行语句分类,得到至少一类语句;
差异提取模块,用于对所述至少一类语句中的每一类语句进行差异提取,生成差异数据库脚本文件。
上述方案中,所述预设分类信息包括操作函数前缀和操作类型前缀;
所述语句分类模块,还用于按照所述操作函数前缀和所述操作类型前缀,对所述格式化后的第一数据库脚本文件中的语句和所述格式化后的第二数据库脚本文件中的语句进行比较分类,得到所述至少一类语句;所述至少一类语句中的每一类语句对应同一个操作函数前缀和同一个操作类型前缀。
上述方案中,所述差异提取模块,还用于当所述每一类语句包括一个语句时,根据预设修改规则,生成所述每一类语句对应的一个差异语句;及当所述每一类语句包括两个语句时,根据所述预设修改规则,对所述两个语句进行字段对比和差异提取,生成所述每一类语句对应的一个差异语句;进而生成所述至少一类语句对应的至少一个差异语句;以及由所述至少一个差异语句,组成所述差异数据库脚本文件。
上述方案中,所述差异提取模块,还用于当所述每一类语句包括一个语句时,根据预设修改规则,生成所述每一类语句对应的差异语句;及当所述每一类语句包括至少两个语句时,将所述至少两个语句中前缀相同的、且所属脚本文件不同的语句划分为一组,得到至少一组语句;及当所述至少一组语句中每组语句包括一个语句时,根据所述预设修改规则,生成所述每组语句对应的一个差异语句;及当所述至少一组语句中每组语句包括两个语句时,根据所述预设修改规则,对所述每组语句中的两个语句进行字段对比和差异提取,生成所述每组语句对应的一个差异语句;并根据所述每组语句对应的一个差异语句,生成所述每一类语句对应的至少一个差异语句;以及根据所述每一类语句对应的差异语句,生成所述差异数据库脚本文件。
上述方案中,所述第一数据库脚本文件为所述数据库对应的完整脚本文件,所述第二数据库脚本文件为对所述完整脚本文件进行修改后的更新脚本文件;
或者,所述第一数据库脚本文件为用于修改数据库的修改脚本文件,所述第二数据脚本文件为对所述修改脚本文件进行迭代修改后的迭代修改脚本文件。
上述方案中,所述差异数据库脚本文件包括更改差异数据库脚本文件,所述更改差异数据库脚本文件表征更改数据库的表结构的脚本文件;
所述差异提取模块,还用于在所述获取同一数据库的第一数据库脚本文件和第二数据库脚本文件之后,当所述第一数据库脚本文件为数据库对应的完整脚本文件,且所述第二数据库脚本文件为对所述完整脚本文件进行修改后的更新脚本文件时,分别对所述完整脚本文件和所述更新脚本文件进行格式化,生成格式化后的完整脚本文件、格式化后的更新脚本文件;所述格式化后的完整脚本文件和所述格式化后的更新脚本文件均以语句为单位存储数据库脚本;以及对所述格式化后的完整脚本文件中的数据定义语言和所述格式化后的更新脚本文件中的数据定义语言进行比较和表结构差异提取,生成所述更新差异数据库脚本文件。
上述方案中,所述格式化模块,还用于对所述第一数据库脚本文件进行语句分析和拆分,生成所述格式化的第一数据库脚本文件;以及对所述第二数据库脚本文件进行语句分析和拆分,生成所述格式化的第二数据库脚本文件。
上述方案中,所述格式化模块,还用于在所述获取同一数据库的第一数据库脚本文件和第二数据库脚本文件之后,分别对所述第一数据库脚本文件和所述第二数据库脚本文件进行格式化,当所述第一数据库脚本文件和/或所述第二数据库脚本文件格式化出错时,生成错误提示信息,所述错误提示信息表征所述第一数据库脚本文件和/或所述第二数据库脚本文件存在语法错误。
上述方案中,所述装置还包括:
显示模块,用于当接收到查询指令时,响应于所述查询指令,弹出文件获取界面,在所述文件获取界面上显示第一输入接口和第二输入接口;
所述获取模块,还用于通过所述第一输入接口获取所述第一数据库脚本文件;以及通过所述第二输入接口获取所述第二数据库脚本文件。
本发明实施例提供了一种信息获取装置,所述装置包括:处理器、存储器和通信总线,所述存储器通过所述通信总线与所述处理器进行通信,所述存储器存储所述处理器可执行的一个或者多个程序,当所述一个或者多个程序被执行时,通过所述处理器执行如上述任一项信息获取方法的步骤。
本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有程序,当所述程序被至少一个处理器执行时,实现如上述任一项信息获取方法的步骤。
本发明实施例提供一种信息获取方法及装置、存储介质,采用上述技术实现方案,分别对数据库的修改前后的第一数据库脚本文件和第二数据库脚本文件进行格式化,生成格式化后的第一数据库脚本文件、格式化后的第二数据库脚本文件,由于格式化后的第一数据库脚本文件和格式化后的第二数据库脚本文件均以语句为单位存储数据库脚本,可以直接对格式化后的第一数据库脚本文件和格式化后的第二数据库脚本文件进行语句分类,得到至少一类语句,进而可以对每一类语句进行差异提取,如此,自动完成对每一类语句的差异提取,生成差异数据库脚本文件,而差异数据库脚本文件就是第二数据库脚本文件相较于第一数据库脚本文件的变化的数据库脚本文件,相较于人工获取变化的数据库脚本文件,自动获取变化的数据库脚本文件,提高了变化的数据库脚本文件的获取速度和准确度。
附图说明
图1为本发明实施例提供的一种信息获取方法的流程图一;
图2为本发明实施例提供的一种信息获取方法的流程图二;
图3为本发明实施例提供的一种信息获取方法的流程图三;
图4为本发明实施例提供的一种信息获取方法的流程图四;
图5为本发明实施例提供的一种文件获取界面的示意图;
图6为本发明实施例提供的一种信息获取装置的结构示意图一;
图7为本发明实施例提供的一种信息获取装置的结构示意图二。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
数据库作为一种专门管理数据资源的系统,应用程序的正常使用往往需要数据库的支持,开发人员为每个应用程序建立数据库,将应用程序所需的数据保存在数据库中,还会随着应用程序所需数据的更新来更新数据库;其中,开发人员通过数据库脚本文件建立数据库,并通过修改数据库脚本文件来更新数据库的内容。
通常将用于创建数据库对象的语句的集合,称为数据库脚本,并将数据库脚本保存为文件;利用数据库脚本能够提高数据访问的效率,并进行相关的数据处理;数据库脚本的使用环境包括:MY-SQL数据库、SQLServer数据库、oracle数据库等等;其中,创建数据库对象的语句包括结构化查询语句(SQL,Structured Query Language),SQL是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统,保存SQL脚本的SQL脚本文件的文件名以.sql结尾。
开发人员在利用数据库脚本文件建立应用程序的数据库后,发布应用程序以供用户下载使用,在应用程序发布期间还会对应用程序进行更新,例如,更新数据库中的表结构或表数据;开发人员可以修改数据库脚本以更新数据库,由于数据库的更新会影响应用程序的使用,需要利用修改数据库脚本后产生的变化的数据库脚本,来测试数据库更新造成的影响。
在一些实施例中,执行修改后的数据库脚本,相当于执行修改前的数据库脚本和变化的数据库脚本。
在一些实施例中,对数据库的更新操作包括新增、修改和删除,例如,新增表结构、新增表数据、修改表结构、修改表数据、删除表结构和删除表数据等。
实施例一
本发明实施例提供一种信息获取方法,如图1所示,该方法包括:
S101、获取同一数据库的第一数据库脚本文件和第二数据库脚本文件;第二数据库脚本文件为对第一数据库脚本文件进行修改后生成的脚本文件;
信息获取装置提供有文件的输入接口,信息获取装置从输入接口接收第一数据库脚本文件和第二数据库脚本文件。
在一些实施例中,信息获取装置接收到查询指令时,响应于查询指令,在显示模块上弹出文件获取界面,在文件获取界面上显示第一输入接口和第二输入接口;通过第一输入接口获取第一数据库脚本文件;通过第二输入接口获取第二数据库脚本文件。
用户通过第一输入接口上传第一数据库脚本文件,通过第二输入接口上传第二数据库脚本文件,使信息获取装置获取这两个脚本文件,其中,第一输入接口和第二输入接口可以是同一个输入接口,也可以不是同一个输入接口。
在一些实施例中,第一数据库脚本文件为数据库对应的完整脚本文件,第二数据库脚本文件为对完整脚本文件进行修改后的更新脚本文件;或者,第一数据库脚本文件为用于更新数据库的修改脚本文件,第二数据脚本文件为对修改脚本文件进行迭代修改后的迭代修改脚本文件。
开发人员编写初始脚本文件,运行初始脚本文件建立数据库,还可以对初始脚本文件进行迭代修改,完整脚本文件可以是初始脚本文件、一次迭代修改后的脚本文件或多次迭代修改后的脚本文件;开发人员还可以单独编写修改脚本文件,在数据库中执行修改脚本文件,以实现对数据库的更新,在修改脚本文件上还可以进行一次迭代修改或多次迭代修改。
示例性地,开发人员通过初始脚本文件,建立一个包括100个数据表的数据库,当需要修改100个数据表中的1个数据表,并新增2个数据表时,可以对初始脚本文件中的1个数据表对应的语句进行修改,并对修改后的初始脚本文件新增2个数据表,得到完整脚本文件;还可以单独编写修改这1个数据表和新增2个数据表的修改脚本文件。
在一些实施例中,上述的各种脚本文件(例如,第一数据库脚本文件,第二数据库脚本文件)可以为SQL脚本文件,每种脚本文件由SQL语句组成,SQL语句包括新建表的语句、修改表数据的语句、更新表数据的语句等等。
S102、分别对第一数据库脚本文件和第二数据库脚本文件进行格式化,生成格式化后的第一数据库脚本文件、格式化后的第二数据库脚本文件;格式化后的第一数据库脚本文件和格式化后的第二数据库脚本文件均以语句为单位存储数据库脚本;
信息获取装置对第一数据库脚本文件进行格式化,生成格式化后的第一数据库脚本文件,并对第二数据库脚本文件进行格式化,生成格式化后的第二数据库脚本文件。
需要说明的是,由于第一数据库脚本文件或第二数据库脚本文件都存在脚本中的语句的换行方式不统一、以及脚本语句的结束方式不统一的现象,例如,脚本中的某一语句分多行保存,脚本中的某一语句结尾处缺少“;”;如此,在对比两个脚本文件时无法按每一个语句进行对比,因此,先对两个脚本文件进行格式化。
在一些实施例中,文件获取界面还包括格式化功能控件;信息获取装置在格式化功能控件被触发时,开始分别对第一数据库脚本文件和第二数据库脚本文件进行格式化,生成格式化后的第一数据库脚本文件、格式化后的第二数据库脚本文件。
信息获取装置获取第一数据库脚本文件和第二数据库脚本文件后,在检测到用户触发格式化功能控件时,分别对第一数据库脚本文件和第二数据库脚本文件进行格式化。
进一步地,信息获取装置分别对第一数据库脚本文件和第二数据库脚本文件进行格式化,当第一数据库脚本文件和/或第二数据库脚本文件格式化出错时,生成错误提示信息,错误提示信息表征第一数据库脚本文件和/或第二数据库脚本文件存在语法错误。
信息获取装置对第一数据库脚本文件格式化成功时,生成格式化后的第一数据库脚本文件,否则,生成第一错误提示信息,并结束流程,第一错误提示信息表征其存在语法错误;对第二数据库脚本文件格式化成功时,生成格式化后的第二数据库脚本文件,否则,生成第二错误提示信息,并结束流程,第二错误提示信息表征其存在语法错误;其中,第一错误提示信息和第二错误提示信息可以合并为一个错误提示信息。
在一些实施例中,信息获取装置对第一数据库脚本文件进行语句分析和拆分,生成格式化的第一数据库脚本文件;对第二数据库脚本文件进行语句分析和拆分,生成格式化的第二数据库脚本文件。
信息获取装置对第一数据库脚本文件进行语句分析,确定第一数据库脚本文件中的每一个语句,并按照预设语句格式,对第一数据库脚本文件中每一个语句进行拆分,例如,在第一数据库脚本文件中的每一行仅保存一个语句,并且每个语句以分号(;)结尾;第二数据库脚本文件的格式化过程,与第一数据库脚本文件的格式化过程同理,此处不再赘述。
示例性地,第一数据库脚本文件中的一个新建表的语句为:
“create table table_a(
field_a VARCHAR2(12)not null,field_b VARCHAR2(60),
field_c VARCHAR2(60))”
格式化后的第一数据库脚本文件中的该新建表的语句为:
“create table table_a(field_a VARCHAR2(12)not null,field_b VARCHAR2(60),field_c VARCHAR2(60));”
需要说明的是,格式化后的第一数据库脚本文件和格式化后的第二数据库脚本文件都是按行存储每一个语句,如此,直接按行从每个文件中提取每一语句进行后续处理。
S103、按照预设分类信息,对格式化后的第一数据库脚本文件和格式化后的第二数据库脚本文件进行语句分类,得到至少一类语句;
信息获取装置按照预设分类信息,对格式化后的第一数据库脚本文件中的所有语句和格式化后的第二数据库脚本文件中的所有语句进行分类,得到至少一类语句。
在一些实施例中,文件获取界面还包括差异提取功能控件;信息获取装置在差异提取功能控件被触发时,开始按照预设分类信息,对格式化后的第一数据库脚本文件和格式化后的第二数据库脚本文件进行语句分类。
用户触发文件获取界面上的差异提取功能控件时,信息获取装置开始进行语句分类。
在一些实施例中,sql脚本包括数据定义语言(DDL,Data Definition Language)和数据操作语言(DML,Data Manipulation Language),当第一数据库脚本文件和第二数据库脚本文件为sql脚本时,格式化后的第一数据库脚本文件中的所有语句包括DDL语句和DML语句,格式化后的第二数据库脚本文件中的所有语句包括DDL语句和DML语句。
在一些实施例中,预设分类信息包括操作函数前缀和操作类型前缀;信息获取装置按照操作函数前缀和操作类型前缀,对格式化后的第一数据库脚本文件中的语句和格式化后的第二数据库脚本文件中的语句进行比较分类,得到至少一类语句;至少一类语句中的每一类语句对应同一个操作函数前缀和同一个操作类型前缀。
信息获取装置将格式化后的第一数据库脚本文件中的所有语句作为第一语句集合;将格式化后的第二数据库脚本文件中的所有语句作为第二语句集合;对第一语句集合和第二语句集合进行操作函数前缀和操作类型前缀的比较,将第一语句集合和第二语句集合中的同一个操作函数前缀和同一个操作类型前缀的语句,作为一类语句;其中,每一类语句可能包括操作函数前缀和操作类型前缀都相同的第一语句集合中的第一语句和第二语句集合中的第二语句,也可能只包括操作函数前缀和操作类型前缀都相同的第一语句集合中的第一语句,也可能只包括操作函数前缀和操作类型前缀都相同的第二语句集合中的第二语句。
需要说明的是,在预设分类信息包括操作函数前缀和操作类型前缀的情况下,每一类语句包括一个语句或至少两个语句,该至少两个语句中的每个语句属于第一数据库脚本文件或第二数据库脚本文件,例如,该至少两个语句中的所有语句属于第一数据库脚本文件或第二数据库脚本文件;或者,该至少两个语句中的一部分语句属于第一数据库脚本文件,该至少两个语句中的另一部分语句属于第二数据库脚本文件。
在一些实施例中,由于数据库脚本中的语句主要分为操作前缀和定义字段两部分,操作前缀包括操作函数、操作类型和操作对象,可以设置预设分类信息包括两级前缀,即操作函数前缀和操作类型前缀,按照两级前缀,对第一语句集合和第二语句集合进行比较分类;还可以设置预设分类信息包括三级前缀或语句的所有操作前缀,三级前缀包括操作函数前缀、操作类型前缀和操作对象前缀,本发明实施例不做限制。
示例性地,以一个新建表格的SQL语句为例,SQL语句为:“create table table_a(field_a VARCHAR2(12)not null,field_b VARCHAR2(60),field_c VARCHAR2(60));”,其中,create为操作函数,table为操作类型,table_a为操作对象的名称,‘field_a VARCHAR2(12)not null,field_b VARCHAR2(60),field_c VARCHAR2(60)’为定义字段。
在一些实施例中,预设分类信息包括操作函数前缀、操作类型前缀和操作对象前缀,按照操作函数前缀、操作类型前缀和操作对象前缀,对格式化后的第一数据库脚本文件中的语句和格式化后的第二数据库脚本文件中的语句进行比较分类,得到至少一类语句;至少一类语句中的每一类语句对应同一个操作函数前缀、同一个操作类型前缀和同一个操作对象前缀。
在一些实施例中,按照操作函数前缀、操作类型前缀和操作对象前缀进行比较分类的过程,可以与按照操作函数前缀和操作类型前缀进行比较分类的过程同理,此处不再赘述。
在一些实施例中,在预设分类信息包括操作函数前缀、操作类型前缀和操作对象前缀,且操作函数前缀、操作类型前缀和操作对象前缀是语句的所有前缀的情况下,信息获取装置对第一语句集合和第二语句集合进行比较时,将第一语句集合中的每个第一语句,和第二语句集合中的所有第二语句比较操作函数前缀、操作类型前缀和操作对象前缀;当第二语句集合中存在与每个第一语句的操作函数前缀相同、操作类型前缀相同、且操作类型前缀相同的一个第二语句,将每个第一语句和这一个第二语句作为一类语句;当第二语句集合中不存在与每个第一语句的操作函数前缀相同、操作类型前缀相同、且操作类型前缀相同的一个第二语句,将每个第一语句作为一类语句;还将第二语句集合中的每个其他第二语句,作为一类语句,其他第二语句在第一语句集合中不存在操作函数前缀相同、操作类型前缀相同、且操作对象前缀相同的一个第一语句。
需要说明的是,在预设分类信息包括操作函数前缀、操作类型前缀和操作对象前缀,且操作函数前缀、操作类型前缀和操作对象前缀是语句的所有前缀的情况下,每一类语句包括一个语句或两个语句,该一个语句属于第一数据库脚本文件或第二数据库脚本文件,该两个语句分别属于第一数据库脚本文件和第二数据库脚本文件。
S104、对至少一类语句中的每一类语句进行差异提取,生成差异数据库脚本文件。
信息获取装置根据预设修改规则,为至少一类语句中的每一类语句,生成差异语句,由所有的差异语句组成差异数据库脚本文件,例如,文件后缀为.sql的差异数据库脚本文件,以使得利用差异数据库脚本文件修改数据库并确定修改数据库产生的影响。
进一步地,信息获取装置执行第一数据库脚本文件和差异数据库脚本文件,相当于执行第二数据库脚本文件;信息获取装置可以在第一数据库脚本文件生成的数据库中,执行差异数据库脚本文件,以获知第二数据库脚本文件相较于第一数据库脚本文件的修改部分,来更新数据库产生的影响程度。
在一些实施例中,当每一类语句包括一个语句时,信息获取装置根据预设修改规则,生成每一类语句对应的一个差异语句;当每一类语句包括两个语句时,信息获取装置根据预设修改规则,对两个语句进行字段对比和差异提取,生成每一类语句对应的一个差异语句;进而生成至少一类语句对应的至少一个差异语句;由至少一个差异语句,组成差异数据库脚本文件。
在预设分类信息包括操作函数前缀、操作类型前缀和操作对象前缀,且操作函数前缀、操作类型前缀和操作对象前缀是语句的所有前缀的情况下,每一类语句包括一个语句或两个语句,两个语句分别属于第一数据库脚本文件和第二数据库脚本文件;信息获取装置按照预设修改规则,生成每一类语句对应的一个差异语句,进而由所有差异语句组成差异数据库脚本文件;其中,预设修改规则包括新增操作对应的语句格式、修改操作对应的语句格式和删除操作对应的语句格式。
示例性地,新增操作对应的语句格式包括新增操作的字符,例如,add;修改操作对应的语句格式包括修改操作的字符,例如,modify;删除操作对应的语句格式包括删除操作的字符,例如,drop。
具体地,信息获取装置在每一类语句只包括一个语句、且一个语句属于第一数据库脚本文件时,利用删除操作对应的语句格式,生成该语句对应的差异语句;其中,该差异语句包括该语句和删除操作的字符;每一类语句只包括一个语句、且一个语句属于第一数据库脚本文件,表示开发人员在第二数据库脚本文件中删除了该语句。
具体地,信息获取装置在每一类语句只包括一个语句、且一个语句属于第二数据库脚本文件时,利用新增操作对应的语句格式,生成该语句对应的差异语句;其中,该差异语句包括该语句和新增操作的字符;每一类语句只包括一个语句、且一个语句属于第二数据库脚本文件,表示开发人员在第二数据库脚本文件中新增了该语句。
具体地,信息获取装置在每一类语句包括两个语句、两个语句中的第一语句属于第一数据库脚本文件、且两个语句中的第二语句属于第二数据库脚本文件时,对这两个语句进行字段对比,得到更改字段,并根据预设修改规则,生成这两个语句对应的差异语句;其中,该差异语句包括更改字段和更改字段对应的操作字符。
进一步地,信息获取装置确定两个语句中的第二语句相较于第一语句的更改字段,更改字段包括以下至少一项:新增的字段、删除的字段、内容修改的字段;其中,当某一个数据格式的字段只存在于第二语句中、不存在于第一语句中时,该数据格式的字段为新增的字段;当某一个数据格式的字段只存在于第一语句中、不存在于第二语句中时,该数据格式的字段为删除的字段;当第一语句中的某一数据格式的字段和第二语句中的相同数据格式的字段的内容不同时,第二语句中的相同数据格式的字段为修改的字段。
示例性地,以oracle数据库对应的一类用于新建表格的SQL语句为例,该类SQL语句中的第一语句为:
create table table_a(field_a VARCHAR2(12)not null,field_b VARCHAR2(60),field_c VARCHAR2(60));
该类SQL语句中的第二语句为:
create table table_a(field_a VARCHAR2(12)not null,field_b VARCHAR2(40),field_d VARCHAR2(2)default'N');
可以看出,第一语句和第二语句的操作函数前缀、操作类型前缀和操作对象前缀都相同;第二语句中的field_b VARCHAR2(40),相较于第一语句中的field_b VARCHAR2(60),数据格式相同,字段的内容不同,第二语句中的field_b VARCHAR2(40)为修改的字段;第二语句中不存在和第一语句中的field_c VARCHAR2(60)的数据格式相同的字段,第一语句中的field_c VARCHAR2(60)为删除的字段;第二语句中的field_d VARCHAR2(2)default'N',在第一语句中没有数据格式相同的字段,第二语句中的field_d VARCHAR2(2)default'N'为新增的字段;进而,可以生成该类用于新建表格的SQL语句对应的差异语句为:
alter table table_a modify field_b VARCHAR2(40);
alter table table_a drop column field_c;
alter table table_a add field_d VARCHAR2(2)default'N';
在一些实施例中,当每一类语句包括一个语句时,根据预设修改规则,生成每一类语句对应的差异语句;当每一类语句包括至少两个语句时,将至少两个语句中前缀相同的、且所属脚本文件不同的语句划分为一组,得到至少一组语句;当至少一组语句中每组语句包括一个语句时,根据预设修改规则,生成每组语句对应的一个差异语句;当至少一组语句中每组语句包括两个语句时,根据预设修改规则,对每组语句中的两个语句进行字段对比和差异提取,生成每组语句对应的一个差异语句;并根据每组语句对应的一个差异语句,生成每一类语句对应的至少一个差异语句;根据每一类语句对应的差异语句,生成差异数据库脚本文件。
在预设分类信息包括操作函数前缀和操作类型前缀的情况下,信息获取装置确定每一类语句只包括一个语句时,根据预设修改规则,生成每一类语句对应的差异语句;每一类语句包括至少两个语句时,由于至少两个语句不一定是前缀完全相同、且分别属于两个数据库脚本文件的语句,需要对每一类语句中的至少两个语句进行进一步分类,得到至少一组语句,再对至少一组语句中每组语句进行字段对比和差异提取,生成每组语句对应的一个差异语句,进而得到至少一组语句中所有组语句对应的差异语句组成每一类语句对应的至少一个差异语句;由至少一类语句中所有类语句对应的差异语句组成差异数据库脚本文件;其中,每组语句包括一个语句或两个语句,每组语句中的两个语句分别属于第一数据库脚本文件和第二数据库脚本文件、且两个语句的所有前缀相同。
需要说明的是,在预设分类信息包括操作函数前缀和操作类型前缀,且每一类语句只包括一个语句的情况下,信息获取装置根据预设修改规则生成每一类语句对应的差异语句的实现过程,与在预设分类信息包括操作函数前缀、操作类型前缀和操作对象前缀,操作函数前缀、操作类型前缀和操作对象前缀是语句的所有前缀,且每一类语句只包括一个语句的情况下,根据预设修改规则生成每一类语句对应的差异语句的实现过程同理,此处不再赘述。
具体地,每一类语句包括至少两个语句,至少两个语句包括以下一种:至少一个第一语句、至少一个第二语句、至少一个第一语句和至少一个第二语句;其中,第一语句为属于第一数据库脚本文件的语句;第二语句为属于第二数据库脚本文件的语句;信息获取装置将至少两个语句中的操作函数前缀相同、操作类型前缀相同和操作对象前缀相同的每个第一语句和每个第二语句,作为一类语句;将至少两个语句中的每个其他第一语句作为一类语句,其他第一语句为在至少两个语句中不存在操作函数前缀相同、操作类型前缀相同和操作对象前缀相同的第二语句的语句;将至少两个语句中的每个其他第二语句作为一类语句,其他第二语句为在至少两个语句中不存在操作函数前缀相同、操作类型前缀相同和操作对象前缀相同的第一语句的语句;进而得到至少一组语句。
需要说明的是,在预设分类信息包括操作函数前缀和操作类型前缀的情况下,信息获取装置对至少一组语句中每组语句进行字段对比和差异提取,生成每组语句对应的一个差异语句的实现过程,与在预设分类信息包括操作函数前缀、操作类型前缀和操作对象前缀,且操作函数前缀、操作类型前缀和操作对象前缀是语句的所有前缀情况下,对每一类语句进行差异提取,生成每一类语句对应的一个差异语句的实现过程同理,此处不再赘述。
在一些实施例中,在步骤S102之后,信息获取装置还可以利用排序字典(sorteddictionary),对格式化后的第一数据库脚本文件和格式化后的第二数据库脚本文件进行差异提取,生成差异数据库脚本文件。
具体地,信息获取装置在利用排序字典进行差异提取时,对格式化后的第一数据库脚本文件中的第一语句和格式化后的第二数据库脚本文件中的第二语句,从第一字符开始进行比较;当一个第一语句和一个第二语句存在至少两级前缀相同时,生成该第一语句和该第二语句对应的差异语句;或者,当一个第一语句不存在至少两级前缀相同的第二语句时,生成该第一语句对应的差异语句;或者,当一个第二语句不存在至少两级前缀相同的第一语句时,生成该第二语句对应的差异语句。
在一些实施例中,差异数据库脚本文件包括更改差异数据库脚本文件,更改差异数据库脚本文件表征更改数据库的表结构的脚本文件;如图2所示,在步骤S101之后,信息获取方法还包括:
S201、当第一数据库脚本文件为数据库对应的完整脚本文件,第二数据库脚本文件为对完整脚本文件进行修改后的更新脚本文件时,分别对完整脚本文件和更新脚本文件进行格式化,生成格式化后的完整脚本文件、格式化后的更新脚本文件;格式化后的完整脚本文件和格式化后的更新脚本文件均以语句为单位存储数据库脚本;
装置分别对完整脚本文件和更新脚本文件进行格式化的过程,与分别对第一数据库脚本文件和第二数据库脚本文件进行格式化的过程同理,此处不再赘述。
S202、对格式化后的完整脚本文件中的数据定义语言和格式化后的更新脚本文件中的数据定义语言进行比较和表结构差异提取,生成更新差异数据库脚本文件。
信息获取装置在差异提取功能控件被触发时,对于格式化后的完整脚本文件和对应的格式化后的更新脚本文件,执行比较数据定义语言和表结构差异提取,生成更改差异数据库脚本文件。
在一些实施例中,信息获取装置对格式化后的完整脚本文件中的数据定义语言和格式化后的更新脚本文件中的数据定义语言进行比较,确定格式化的更新脚本文件相较于格式化的完整脚本文件产生的新增语句和删除语句;由新增语句和新增操作的字符,生成新增差异语句,由删除语句和删除操作的字符,生成删除差异语句;由新增差异语句和删除差异语句,组成更改差异数据库脚本文件。
DDL包括结构的定义语言、操作方法的定义语言等,信息获取装置针对格式化后的完整脚本文件和格式化后的更新脚本文件,只比较DDL语句,也就是说,对格式化后的完整脚本文件和格式化后的更新脚本文件,只比较定义表结构的语句,不比较和数据库数据相关的语句。
具体地,当格式化后的更新脚本文件中的一条DDL语句,在格式化后的完整脚本文件中的所有DDL语句中不存在相同的语句时,将格式化后的更新脚本文件中的该条DDL语句,作为一条新增语句。
具体地,当格式化后的完整脚本文件中的一条DDL语句,在格式化后的更新脚本文件中的所有DDL语句中不存在相同的语句时,将格式化后的完整脚本文件中的该条DDL语句,作为一条删除语句。
需要说明的是,由于对完整脚本文件进行修改后生成的更新脚本文件,相较于完整脚本文件,大量的数据库数据被更新(如插入了几十万条数据),相同地,格式化后的更新脚本文件相较于格式化后的完整脚本文件,也有相同数量的数据库的数据被更新,为了减少工作来量,对于格式化后的完整脚本文件和格式化后的更新脚本文件,只比较DDL语句,不比较和数据库数据相关的DML语句。
进一步地,基于新增语句或删除语句生成的更改差异数据库脚本文件,只能反映数据库的表结构的更改,信息获取装置在完整脚本文件生成的数据库中,执行差异数据库脚本文件,以获知更改数据库脚本文件相较于完整数据库脚本文件的表结构的修改部分,来更新数据库产生的影响程度。
需要说明的是,表结构的修改部分对数据库更新的影响程度,小于整体修改部分对数据库更新的影响程度。
在一些实施例中,如图3所示,一种信息获取方法包括:
S301、信息获取装置获取同一数据库的第一数据库脚本文件和第二数据库脚本文件;第二数据库脚本文件为对第一数据库脚本文件进行修改后生成的脚本文件;
S302、信息获取装置分别对第一数据库脚本文件和第二数据库脚本文件进行格式化,生成格式化后的第一数据库脚本文件、格式化后的第二数据库脚本文件;格式化后的第一数据库脚本文件和格式化后的第二数据库脚本文件均以语句为单位存储数据库脚本;
S303、当检测到差异提取指令时,信息获取装置响应于差异提取指令,按照预设分类信息和预设修改规则,对格式化后的第一数据库脚本文件和格式化后的第二数据库脚本文件进行语句分类和差异提取,生成差异数据库脚本文件;
信息获取装置在检测到文件获取界面上的差异提取功能控件被触发时,生成差异提取指令,响应于差异提取指令,按照预设分类信息,对格式化后的第一数据库脚本文件和格式化后的第二数据库脚本文件进行语句分类,得到至少一类语句;对至少一类语句中的每一类语句进行差异提取,生成差异数据库脚本文件。
S304、信息获取装置在第一数据库脚本文件对应的数据库中,执行差异数据库脚本文件,以获取第二数据库脚本文件更新数据库产生的影响程度。
在一些实施例中,如图4所示,一种信息获取方法包括:
S401、信息获取装置弹出文件获取界面,在文件获取界面上显示第一输入接口、第二输入接口、格式化功能控件和差异提取功能控件;
信息获取装置安装有执行信息获取方法的客户端,当用户打开该客户端时,在显示模块上弹出文件获取界面并显示。
示例性地,参见图5所示的文件获取界面,文件获取界面50的标题名称为“差异数据库脚本生成工具(步骤一:格式化;步骤二:生成差异)”,第一输入接口51对应的提示信息为“旧版本”,第二输入接口52对应的提示信息为“新版本”,格式化功能控件53的名称为“格式化”,差异提取功能控件54的名称为“生成差异”。
S402、通过第一输入接口获取第一数据库脚本文件,通过第二输入接口获取第二数据库脚本文件;
信息获取装置显示文件获取界面后,用户在第一输入接口导入第一数据库脚本文件,信息获取装置获取第一数据库脚本文件;用户在第二输入接口导入第二数据库脚本文件,信息获取装置获取第二数据库脚本文件。
S403、信息获取装置检测到格式化功能控件被触发时,分别对第一数据库脚本文件和第二数据库脚本文件进行格式化,生成格式化后的第一数据库脚本文件、格式化后的第二数据库脚本文件;格式化后的第一数据库脚本文件和格式化后的第二数据库脚本文件均以语句为单位存储数据库脚本;
S404、信息获取装置检测到差异提取功能控件被触发时,按照预设分类信息,对格式化后的第一数据库脚本文件和格式化后的第二数据库脚本文件进行语句分类,得到至少一类语句;
S405、当每一类语句包括一个语句时,信息获取装置根据预设修改规则,生成每一类语句对应的一个差异语句;当每一类语句包括两个语句时,信息获取装置根据预设修改规则,对两个语句进行字段对比和差异提取,生成每一类语句对应的一个差异语句;进而生成至少一类语句对应的至少一个差异语句;
S406、信息获取装置由至少一个差异语句,组成差异数据库脚本文件;
信息获取装置汇总至少一个差异语句,生成一个后缀为.sql的差异数据库脚本文件,并将其保存在预设文件夹中。
S407、信息获取装置在第一数据库脚本文件对应的数据库中,执行差异数据库脚本文件,以获取第二数据库脚本文件更新数据库产生的影响程度。
可以理解的是,信息获取装置分别对数据库的修改前后的第一数据库脚本文件和第二数据库脚本文件进行格式化,生成格式化后的第一数据库脚本文件、格式化后的第二数据库脚本文件,由于格式化后的第一数据库脚本文件和格式化后的第二数据库脚本文件均以语句为单位存储数据库脚本,可以直接对格式化后的第一数据库脚本文件和格式化后的第二数据库脚本文件进行语句分类,得到至少一类语句,进而可以对每一类语句进行差异提取,如此,自动完成对每一类语句的差异提取,生成差异数据库脚本文件,而差异数据库脚本文件就是第二数据库脚本文件相较于第一数据库脚本文件的变化的数据库脚本文件,相较于人工获取变化的数据库脚本文件,自动获取变化的数据库脚本文件,提高了变化的数据库脚本文件的获取速度和准确度。
实施例二
基于本发明实施例一的同一发明构思,进行进一步的说明。
本发明实施例提供一种信息获取装置6,如图6所示,该装置6包括:
获取模块61,用于获取同一数据库的第一数据库脚本文件和第二数据库脚本文件;第二数据库脚本文件为对第一数据库脚本文件进行修改后生成的脚本文件;
格式化模块62,用于分别对第一数据库脚本文件和第二数据库脚本文件进行格式化,生成格式化后的第一数据库脚本文件、格式化后的第二数据库脚本文件;格式化后的第一数据库脚本文件和格式化后的第二数据库脚本文件均以语句为单位存储数据库脚本;
语句分类模块63,用于按照预设分类信息,对格式化后的第一数据库脚本文件和格式化后的第二数据库脚本文件进行语句分类,得到至少一类语句;
差异提取模块64,用于对至少一类语句中的每一类语句进行差异提取,生成差异数据库脚本文件。
在一些实施例中,预设分类信息包括操作函数前缀和操作类型前缀;
语句分类模块63,还用于按照操作函数前缀和操作类型前缀,对格式化后的第一数据库脚本文件中的语句和格式化后的第二数据库脚本文件中的语句进行比较分类,得到至少一类语句;至少一类语句中的每一类语句对应同一个操作函数前缀和同一个操作类型前缀。
在一些实施例中,差异提取模块64,还用于当每一类语句包括一个语句时,根据预设修改规则,生成每一类语句对应的一个差异语句;及当每一类语句包括两个语句时,根据预设修改规则,对两个语句进行字段对比和差异提取,生成每一类语句对应的一个差异语句;进而生成至少一类语句对应的至少一个差异语句;以及由至少一个差异语句,组成差异数据库脚本文件。
在一些实施例中,差异提取模块64,还用于当每一类语句包括一个语句时,根据预设修改规则,生成每一类语句对应的差异语句;及当每一类语句包括至少两个语句时,将至少两个语句中前缀相同的、且所属脚本文件不同的语句划分为一组,得到至少一组语句;及当至少一组语句中每组语句包括一个语句时,根据预设修改规则,生成每组语句对应的一个差异语句;及当至少一组语句中每组语句包括两个语句时,根据预设修改规则,对每组语句中的两个语句进行字段对比和差异提取,生成每组语句对应的一个差异语句;并根据每组语句对应的一个差异语句,生成每一类语句对应的至少一个差异语句;以及根据每一类语句对应的差异语句,生成差异数据库脚本文件。
在一些实施例中,第一数据库脚本文件为数据库对应的完整脚本文件,第二数据库脚本文件为对完整脚本文件进行修改后的更新脚本文件;
或者,第一数据库脚本文件为用于修改数据库的修改脚本文件,第二数据脚本文件为对修改脚本文件进行迭代修改后的迭代修改脚本文件。
在一些实施例中,差异数据库脚本文件包括更改差异数据库脚本文件,更改差异数据库脚本文件表征更改数据库的表结构的脚本文件;
差异提取模块64,还用于在获取同一数据库的第一数据库脚本文件和第二数据库脚本文件之后,当第一数据库脚本文件为数据库对应的完整脚本文件,且第二数据库脚本文件为对完整脚本文件进行修改后的更新脚本文件时,分别对完整脚本文件和更新脚本文件进行格式化,生成格式化后的完整脚本文件、格式化后的更新脚本文件;格式化后的完整脚本文件和格式化后的更新脚本文件均以语句为单位存储数据库脚本;以及对格式化后的完整脚本文件中的数据定义语言和格式化后的更新脚本文件中的数据定义语言进行比较和表结构差异提取,生成更新差异数据库脚本文件。
在一些实施例中,格式化模块62,还用于对第一数据库脚本文件进行语句分析和拆分,生成格式化的第一数据库脚本文件;以及对第二数据库脚本文件进行语句分析和拆分,生成格式化的第二数据库脚本文件。
在一些实施例中,格式化模块62,还用于在获取同一数据库的第一数据库脚本文件和第二数据库脚本文件之后,分别对第一数据库脚本文件和第二数据库脚本文件进行格式化,当第一数据库脚本文件和/或第二数据库脚本文件格式化出错时,生成错误提示信息,错误提示信息表征第一数据库脚本文件和/或第二数据库脚本文件存在语法错误。
在一些实施例中,该装置6还包括:
显示模块65,用于当接收到查询指令时,响应于所述查询指令,弹出文件获取界面,在所述文件获取界面上显示第一输入接口和第二输入接口;
获取模块61,还用于通过所述第一输入接口获取所述第一数据库脚本文件;以及通过所述第二输入接口获取所述第二数据库脚本文件。
需要说明的是,在实际应用中,上述获取模块61、格式化模块62、语句分类模块63、差异提取模块64和显示模块65,还可由位于信息获取装置6上的处理器66实现,具体为CPU(Central Processing Unit,中央处理器)、MPU(Microprocessor Unit,微处理器)、DSP(Digital Signal Processing,数字信号处理器)或现场可编程门阵列(FPGA,FieldProgrammable Gate Array)等实现。
本发明实施例还提供了一种信息获取装置,如图7所示,该装置6包括:处理器66、存储器67和通信总线68,存储器67通过通信总线68与处理器66进行通信,存储器67存储处理器66可执行的一个或者多个信息获取程序,当一个或者多个信息获取程序被执行时,通过处理器66执行如前述实施例所述的任意一种信息获取方法。
在实际应用中,存储器67可以是易失性第一存储器(volatile memory),例如随机存取第一存储器(Random-Access Memory,RAM);或者非易失性第一存储器(non-volatilememory),例如只读第一存储器(Read-Only Memory,ROM),快闪第一存储器(flashmemory),硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);或者上述种类的第一存储器的组合,并向处理器66提供程序和数据。
本发明实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有信息获取程序,当所述信息获取程序被处理器66执行时,实现所述处理器66执行前述实施例所述的任意一种信息获取方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程信息获取设备的处理器以产生一个机器,使得通过计算机或其他可编程信息获取设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程信息获取设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程信息获取设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
本发明所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
本发明所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (10)
1.一种信息获取方法,其特征在于,所述方法包括:
获取同一数据库的第一数据库脚本文件和第二数据库脚本文件;所述第二数据库脚本文件为对所述第一数据库脚本文件进行修改后生成的脚本文件;
对所述第一数据库脚本文件进行语句分析和拆分,生成格式化后的第一数据库脚本文件;对所述第二数据库脚本文件进行语句分析和拆分,生成格式化后的第二数据库脚本文件;其中,当所述第一数据库脚本文件和/或所述第二数据库脚本文件格式化成功时,生成格式化后的第一数据库脚本文件和/或所述第二数据库脚本文件;当所述第一数据库脚本文件和/或所述第二数据库脚本文件格式化出错时,生成错误提示信息,所述错误提示信息表征所述第一数据库脚本文件和/或所述第二数据库脚本文件存在语法错误;
所述格式化后的第一数据库脚本文件和所述格式化后的第二数据库脚本文件均以语句为单位存储数据库脚本;所述语句分析和拆分是指,确定数据库脚本文件中的每一个语句,按照预设语句格式,对数据库脚本文件中每一个语句进行拆分,得到按行存储每一个语句的格式化后的数据库脚本文件;
按照预设分类信息,对所述格式化后的第一数据库脚本文件和所述格式化后的第二数据库脚本文件进行语句分类,得到至少一类语句;
对所述至少一类语句中的每一类语句进行差异提取,生成差异数据库脚本文件;
在所述第一数据库脚本文件生成的数据库中,执行所述差异数据库脚本文件,以获知所述第二数据库脚本文件相较于所述第一数据库脚本文件的修改部分,来更新数据库产生的影响程度。
2.根据权利要求1所述的方法,其特征在于,所述预设分类信息包括操作函数前缀和操作类型前缀;所述按照预设分类信息,对所述格式化后的第一数据库脚本文件和所述格式化后的第二数据库脚本文件进行语句分类,得到至少一类语句,包括:
按照所述操作函数前缀和所述操作类型前缀,对所述格式化后的第一数据库脚本文件中的语句和所述格式化后的第二数据库脚本文件中的语句进行比较分类,得到所述至少一类语句;所述至少一类语句中的每一类语句对应同一个操作函数前缀和同一个操作类型前缀。
3.根据权利要求1所述的方法,其特征在于,所述对所述至少一类语句中的每一类语句进行差异提取,生成差异数据库脚本文件,包括:
当所述每一类语句包括一个语句时,根据预设修改规则,生成所述每一类语句对应的一个差异语句;
当所述每一类语句包括两个语句时,根据所述预设修改规则,对所述两个语句进行字段对比和差异提取,生成所述每一类语句对应的一个差异语句;进而生成所述至少一类语句对应的至少一个差异语句;
由所述至少一个差异语句,组成所述差异数据库脚本文件。
4.根据权利要求1所述的方法,其特征在于,所述对所述至少一类语句中的每一类语句进行差异提取,生成差异数据库脚本文件,包括:
当所述每一类语句包括一个语句时,根据预设修改规则,生成所述每一类语句对应的差异语句;
当所述每一类语句包括至少两个语句时,将所述至少两个语句中前缀相同的、且所属脚本文件不同的语句划分为一组,得到至少一组语句;
当所述至少一组语句中每组语句包括一个语句时,根据所述预设修改规则,生成所述每组语句对应的一个差异语句;
当所述至少一组语句中每组语句包括两个语句时,根据所述预设修改规则,对所述每组语句中的两个语句进行字段对比和差异提取,生成所述每组语句对应的一个差异语句;并根据所述每组语句对应的一个差异语句,生成所述每一类语句对应的至少一个差异语句;
根据所述每一类语句对应的差异语句,生成所述差异数据库脚本文件。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述第一数据库脚本文件为所述数据库对应的完整脚本文件,所述第二数据库脚本文件为对所述完整脚本文件进行修改后的更新脚本文件;
或者,所述第一数据库脚本文件为用于修改数据库的修改脚本文件,所述第二数据脚本文件为对所述修改脚本文件进行迭代修改后的迭代修改脚本文件。
6.根据权利要求1所述的方法,其特征在于,所述差异数据库脚本文件包括更改差异数据库脚本文件,所述更改差异数据库脚本文件表征更改数据库的表结构的脚本文件;在所述获取同一数据库的第一数据库脚本文件和第二数据库脚本文件之后,所述方法还包括:
当所述第一数据库脚本文件为数据库对应的完整脚本文件,且所述第二数据库脚本文件为对所述完整脚本文件进行修改后的更新脚本文件时,分别对所述完整脚本文件和所述更新脚本文件进行格式化,生成格式化后的完整脚本文件、格式化后的更新脚本文件;所述格式化后的完整脚本文件和所述格式化后的更新脚本文件均以语句为单位存储数据库脚本;
对所述格式化后的完整脚本文件中的数据定义语言和所述格式化后的更新脚本文件中的数据定义语言进行比较和表结构差异提取,生成所述更新差异数据库脚本文件。
7.根据权利要求1所述的方法,其特征在于,所述获取同一数据库的第一数据库脚本文件和第二数据库脚本文件,包括:
当接收到查询指令时,响应于所述查询指令,弹出文件获取界面,在所述文件获取界面上显示第一输入接口和第二输入接口;
通过所述第一输入接口获取所述第一数据库脚本文件;
通过所述第二输入接口获取所述第二数据库脚本文件。
8.一种信息获取装置,其特征在于,所述装置包括:
获取模块,用于获取同一数据库的第一数据库脚本文件和第二数据库脚本文件;所述第二数据库脚本文件为对所述第一数据库脚本文件进行修改后生成的脚本文件;
格式化模块,用于对所述第一数据库脚本文件进行语句分析和拆分,生成格式化后的第一数据库脚本文件;对所述第二数据库脚本文件进行语句分析和拆分,生成格式化后的第二数据库脚本文件;其中,当所述第一数据库脚本文件和/或所述第二数据库脚本文件格式化成功时,生成格式化后的第一数据库脚本文件和/或所述第二数据库脚本文件;当所述第一数据库脚本文件和/或所述第二数据库脚本文件格式化出错时,生成错误提示信息,所述错误提示信息表征所述第一数据库脚本文件和/或所述第二数据库脚本文件存在语法错误;所述格式化后的第一数据库脚本文件和所述格式化后的第二数据库脚本文件均以语句为单位存储数据库脚本;所述语句分析和拆分是指,确定数据库脚本文件中的每一个语句,按照预设语句格式,对数据库脚本文件中每一个语句进行拆分,得到按行存储每一个语句的格式化后的数据库脚本文件;
语句分类模块,用于按照预设分类信息,对所述格式化后的第一数据库脚本文件和所述格式化后的第二数据库脚本文件进行语句分类,得到至少一类语句;
差异提取模块,用于对所述至少一类语句中的每一类语句进行差异提取,生成差异数据库脚本文件;还用于在所述第一数据库脚本文件生成的数据库中,执行所述差异数据库脚本文件,以获知所述第二数据库脚本文件相较于所述第一数据库脚本文件的修改部分,来更新数据库产生的影响程度。
9.一种信息获取装置,其特征在于,所述装置包括:处理器、存储器和通信总线,所述存储器通过所述通信总线与所述处理器进行通信,所述存储器存储所述处理器可执行的一个或者多个程序,当所述一个或者多个程序被执行时,通过所述处理器执行如权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有程序,当所述程序被至少一个处理器执行时,实现如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911250006.3A CN111078273B (zh) | 2019-12-09 | 2019-12-09 | 一种信息获取方法及装置、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911250006.3A CN111078273B (zh) | 2019-12-09 | 2019-12-09 | 一种信息获取方法及装置、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111078273A CN111078273A (zh) | 2020-04-28 |
CN111078273B true CN111078273B (zh) | 2022-08-12 |
Family
ID=70313379
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911250006.3A Active CN111078273B (zh) | 2019-12-09 | 2019-12-09 | 一种信息获取方法及装置、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111078273B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112445781A (zh) * | 2020-11-30 | 2021-03-05 | 建信金融科技有限责任公司 | 一种数据库ddl管理的方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102096671A (zh) * | 2009-12-14 | 2011-06-15 | 深圳速浪数字技术有限公司 | 一种boss数据库升级脚本的生成方法和设备 |
CN102402559A (zh) * | 2010-09-16 | 2012-04-04 | 中兴通讯股份有限公司 | 一种数据库升级脚本的生成方法和装置 |
CN103810257A (zh) * | 2014-01-24 | 2014-05-21 | 华为技术有限公司 | 一种升级软件数据库的方法、装置及设备 |
CN104965735A (zh) * | 2015-06-18 | 2015-10-07 | 北京京东尚科信息技术有限公司 | 用于生成升级sql脚本的装置 |
JP2016115223A (ja) * | 2014-12-17 | 2016-06-23 | キヤノンマーケティングジャパン株式会社 | データベース管理システム、データベース管理方法、およびプログラム。 |
CN109408528A (zh) * | 2018-10-25 | 2019-03-01 | 北京信安世纪科技股份有限公司 | 一种数据库脚本生成方法、装置、计算装置和存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7447686B2 (en) * | 2002-11-22 | 2008-11-04 | Sas Institute Inc. | Computer-implemented system and method for handling database statements |
CN104102511A (zh) * | 2014-07-17 | 2014-10-15 | 福建星海通信科技有限公司 | 一种基于SQL Server的脚本自动升级系统及方法 |
CN109918299A (zh) * | 2019-02-27 | 2019-06-21 | 洛阳中科汇成科技有限公司 | 一种对比数据库结构差异的方法 |
CN110334097A (zh) * | 2019-06-25 | 2019-10-15 | 深圳前海微众银行股份有限公司 | 表结构修改方法、装置、设备及计算机可读存储介质 |
-
2019
- 2019-12-09 CN CN201911250006.3A patent/CN111078273B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102096671A (zh) * | 2009-12-14 | 2011-06-15 | 深圳速浪数字技术有限公司 | 一种boss数据库升级脚本的生成方法和设备 |
CN102402559A (zh) * | 2010-09-16 | 2012-04-04 | 中兴通讯股份有限公司 | 一种数据库升级脚本的生成方法和装置 |
CN103810257A (zh) * | 2014-01-24 | 2014-05-21 | 华为技术有限公司 | 一种升级软件数据库的方法、装置及设备 |
JP2016115223A (ja) * | 2014-12-17 | 2016-06-23 | キヤノンマーケティングジャパン株式会社 | データベース管理システム、データベース管理方法、およびプログラム。 |
CN104965735A (zh) * | 2015-06-18 | 2015-10-07 | 北京京东尚科信息技术有限公司 | 用于生成升级sql脚本的装置 |
CN109408528A (zh) * | 2018-10-25 | 2019-03-01 | 北京信安世纪科技股份有限公司 | 一种数据库脚本生成方法、装置、计算装置和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111078273A (zh) | 2020-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11256852B2 (en) | Converting portions of documents between structured and unstructured data formats to improve computing efficiency and schema flexibility | |
CN106598612B (zh) | 一种数据库中数据表的操作方法及系统 | |
CN109376196B (zh) | 一种redo日志批量同步方法及装置 | |
US9626368B2 (en) | Document merge based on knowledge of document schema | |
CN108491326B (zh) | 测试行为重组方法、装置及存储介质 | |
US8904352B2 (en) | Systems and methods for processing source code during debugging operations | |
KR20160124744A (ko) | 인-메모리 데이터베이스를 호스팅하는 시스템 및 방법 | |
US9811332B2 (en) | Deploying incremental scripts | |
EP3435256A2 (en) | Optimal sort key compression and index rebuilding | |
CN114780641B (zh) | 多库多表同步方法、装置、计算机设备和存储介质 | |
CN112015722A (zh) | 数据库管理方法、数据血缘分析方法以及相关装置 | |
CN108694108B (zh) | 一种iOS崩溃数据分类与统计的方法和装置 | |
CN111078273B (zh) | 一种信息获取方法及装置、存储介质 | |
CN110442585B (zh) | 数据更新方法、数据更新装置、计算机设备及存储介质 | |
CN108491218A (zh) | 一种数据库变更文件生成的方法和装置 | |
CN112765180B (zh) | 一种对db2数据库建表日志列名解析的方法及装置 | |
CN115658815A (zh) | 基于cdc实现的数据同步的方法 | |
US20230075443A1 (en) | Conversion and migration of key-value store to relational model | |
CN113204558B (zh) | 数据表结构自动更新方法和装置 | |
US20220043821A1 (en) | Method for performing multi-caching on data sources of same type and different types by using cluster-based processing system and device using the same | |
CN113220706A (zh) | 元器件产品查询方法、装置、设备和介质 | |
CN113448965A (zh) | 一种全表扫描的结构化查询语句的确定方法、装置和设备 | |
JP2018109898A (ja) | データマイグレーションシステム | |
CN113326063A (zh) | 数据处理方法、电子设备及存储介质 | |
JP5984629B2 (ja) | マスタファイル差分自動出力装置 |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: Room 221, 2nd floor, Block C, 18 Kechuang 11th Street, Daxing Economic and Technological Development Zone, Beijing, 100176 Applicant after: Jingdong Technology Holding Co.,Ltd. Address before: Room 221, 2nd floor, Block C, 18 Kechuang 11th Street, Daxing Economic and Technological Development Zone, Beijing, 100176 Applicant before: JINGDONG DIGITAL TECHNOLOGY HOLDINGS Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |