CN117608582A - 一种sql语句管理方法、装置、电子设备及存储介质 - Google Patents

一种sql语句管理方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN117608582A
CN117608582A CN202311434065.2A CN202311434065A CN117608582A CN 117608582 A CN117608582 A CN 117608582A CN 202311434065 A CN202311434065 A CN 202311434065A CN 117608582 A CN117608582 A CN 117608582A
Authority
CN
China
Prior art keywords
analysis result
sql
statement
tree information
file
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.)
Pending
Application number
CN202311434065.2A
Other languages
English (en)
Inventor
张恒
范斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Mobile Communications Group Co Ltd, China Mobile Suzhou Software Technology Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN202311434065.2A priority Critical patent/CN117608582A/zh
Publication of CN117608582A publication Critical patent/CN117608582A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开提出了一种SQL语句管理方法、装置、电子设备及存储介质。所述的方法包括:响应于持久性框架中结构化查询语言SQL执行语句的改动操作,解析SQL执行语句,及解析SQL执行语句对应的SQL文件;持久性框架用于通过SQL执行语句访问目标数据库,目标数据库由SQL文件定义;获取第一解析结果及第二解析结果;第一解析结果是对SQL执行语句的解析结果,第二解析结果是对SQL文件的解析结果;第一解析结果和第二解析结果中至少包括目标数据库的语法树信息;比对第一解析结果和所述第二解析结果;响应于第一解析结果和第二解析结果不一致,根据第二解析结果中的语法树信息,更新SQL文件。

Description

一种SQL语句管理方法、装置、电子设备及存储介质
技术领域
本公开涉及计算机领域,尤其涉及一种SQL语句管理方法、装置、电子设备及存储介质。
背景技术
在当前的软件系统开发过程中,处理结构化查询语言(Structured QueryLanguage,简称SQL)的数据定义语言(Data Definition Language,简称DDL)通常会将DDL语句保存在SQL文件中。这些DDL语句用于定义和管理数据库结构,如创建表、修改表结构和创建索引。而对于数据操作语言(Data Manipulation Language,简称DML),例如插入、更新、删除和查询数据等操作,在软件开发中通常依赖于持久性框架,比如MyBatis等。持久性框架通过XML映射文件或注解的方式编写DML语句,用于操作数据库中的数据。
然而,在实际开发过程中,如果修改了DML语句,比如向表中添加新的字段、修改数据类型、数据约束等关键信息操作,但没有相应地在SQL文件中添加DDL语句来更新数据库表结构,这可能会导致在软件的新功能上线时出现异常。为了避免这些问题,开发人员应该确保持久性框架中的DML操作和SQL文件中的DDL语句保持一致。同时,进行任何数据库结构的修改时,都应相应地更新SQL文件中的DDL语句,以保持数据库的一致性。
发明内容
本公开提供一种SQL语句管理方法、装置、电子设备及存储介质,以解决在开发过程中,技术人员修改了持久性框架中的SQL执行语句,但未修改对应的SQL文件,从而导致的软件的新功能上线时出现异常的问题。
本公开的第一方面实施例提出了一种SQL语句管理方法,该方法包括:
响应于持久性框架中结构化查询语言SQL执行语句的改动操作,解析所述SQL执行语句,及解析所述SQL执行语句对应的SQL文件;所述持久性框架用于通过SQL执行语句访问目标数据库,所述目标数据库由所述SQL文件定义;
获取第一解析结果及第二解析结果;所述第一解析结果是对所述SQL执行语句的解析结果,所述第二解析结果是对所述SQL文件的解析结果;所述第一解析结果和所述第二解析结果中至少包括所述目标数据库的语法树信息;
比对所述第一解析结果和所述第二解析结果;
响应于所述第一解析结果和所述第二解析结果不一致,根据所述第二解析结果中的语法树信息,更新所述SQL文件。
本公开的第二方面实施例提出了一种SQL语句管理装置,该装置包括:
解析单元,用于响应于持久性框架中结构化查询语言SQL执行语句的改动操作,解析所述SQL执行语句,及解析所述SQL执行语句对应的SQL文件;所述持久性框架用于通过SQL执行语句访问目标数据库,所述目标数据库由所述SQL文件定义;
获取单元,用于获取第一解析结果及第二解析结果;所述第一解析结果是对所述SQL执行语句的解析结果,所述第二解析结果是对所述SQL文件的解析结果;所述第一解析结果和所述第二解析结果中至少包括所述目标数据库的语法树信息;
比对单元,用于比对所述第一解析结果和所述第二解析结果;
更新单元,用于响应于所述第一解析结果和所述第二解析结果不一致,根据所述第二解析结果中的语法树信息,更新所述SQL文件。
本公开的第三方面实施例提出了一种电子设备,包括:
至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行本公开第一方面实施例中描述的方法。
本公开的第四方面实施例提出了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行本公开第一方面实施例中描述的方法。
综上,本公开提出了一种SQL语句管理方法、装置、电子设备及存储介质,所述的方法包括:响应于持久性框架中结构化查询语言SQL执行语句的改动操作,解析所述SQL执行语句,及解析所述SQL执行语句对应的SQL文件;所述持久性框架用于通过SQL执行语句访问目标数据库,所述目标数据库由所述SQL文件定义;获取第一解析结果及第二解析结果;所述第一解析结果是对所述SQL执行语句的解析结果,所述第二解析结果是对所述SQL文件的解析结果;所述第一解析结果和所述第二解析结果中至少包括所述目标数据库的语法树信息;比对所述第一解析结果和所述第二解析结果;响应于所述第一解析结果和所述第二解析结果不一致,根据所述第二解析结果中的语法树信息,更新所述SQL文件。
通过本公开提供的方案,处理器可实时响应于持久性框架中结构化查询语言SQL执行语句的改动操作,并解析所述SQL执行语句,及解析所述SQL执行语句对应的SQL文件;通过比对所述第一解析结果和所述第二解析结果,即可响应于所述第一解析结果和所述第二解析结果不一致,根据所述第二解析结果中的语法树信息,更新所述SQL文件,避免在持久性框架中添加了DML语句但是并没有在SQL文件中添加对应DDL语句的情况出现,进而保证对应软件的新功能上线时能够正常运行。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图,而且还可以根据提供的附图将本申请应用于其它类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
图1为本公开实施例提供的SQL语句管理方法的流程示意图;
图2为本公开应用示例提供的SQL语句管理方法的流程示意图;
图3为本公开实施例提供的SQL语句管理装置的结构示意图;
图4为本公开实施例提供的电子设备的硬件组成结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
应当理解,本申请中使用的“系统”、“装置”、“单元”和/或“模块”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换该词语。
如本申请和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,在本申请实施例的描述中,“多个”是指两个或多于两个。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。
本申请中使用了流程图用来说明根据本申请的实施例的系统所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
在当前的软件系统开发过程中,处理SQL语句的DDL语句通常会将DDL语句保存在文件中。这些DDL语句用于定义和管理数据库结构,如创建表、修改表结构和创建索引。而对于DML语句,例如插入、更新、删除和查询数据等操作,在软件开发中通常依赖于持久性框架,比如MyBatis等。持久性框架通过XML映射文件或注解的方式编写DML语句,用于操作数据库中的数据。
然而,在实际开发过程中,如果修改了DML语句,比如向表中添加新的字段、修改数据类型、数据约束等关键信息操作,但没有相应地在SQL文件中添加DDL语句来更新数据库表结构,这可能会导致在软件的新功能上线时出现异常。为了避免这些问题,开发人员应该确保持久性框架中的DML操作和SQL文件中的DDL语句保持一致。同时,进行任何数据库结构的修改时,都应相应地更新SQL文件中的DDL语句,以保持数据库的一致性。
相关技术中,需要新建表或更新字段时,通常由开发人员首先根据新建表或更新字段的内容,更新SQL语句中的DDL语句。然后再利用持久性框架更新对应的DML语句。但是,通过开发人员手动检查、更新DDL语句的效率低,且受限于开发人员的细心程度,其准确性也不能保证。
为了解决相关技术中的至少一个缺陷,本公开提供了一种SQL语句管理方法,处理器可响应于持久性框架中结构化查询语言SQL执行语句的改动操作,并解析所述SQL执行语句,及解析所述SQL执行语句对应的SQL文件;通过比对所述第一解析结果和所述第二解析结果,即可响应于所述第一解析结果和所述第二解析结果不一致,根据所述第二解析结果中的语法树信息,更新所述SQL文件,避免在持久性框架中添加了DML语句,但是并没有在SQL文件中添加对应DDL语句的情况出现,进而保证对应软件的新功能上线时能够正常运行。
下面结合附图及具体实施例对本公开作进一步详细的说明。
如图1所示,图1为本公开实施例提供的一种SQL语句管理方法的流程示意图。本公开实施例提供的一种SQL语句管理方法,其执行主体可以是软件开发使用的处理器,也可以是单独的处理器,所述的方法包括以下步骤:
步骤101,响应于持久性框架中结构化查询语言SQL执行语句的改动操作,解析所述SQL执行语句,及解析所述SQL执行语句对应的SQL文件;
在一实施例中,所述持久性框架包括Hibernate。Hibernate是一个强大的对象关系映射(Object-Relational Mapping,简称ORM)框架,此框架提供了将Java对象映射到关系型数据库的能力。此框架可以通过注解或XML文件来定义对象与数据库表之间的映射关系,并提供了丰富的查询和事务处理功能。
在一实施例中,所述持久性框架包括MyBatis。MyBatis是另一个流行的持久化框架,此框架也是一个ORM框架,但相比Hibernate更加轻量级。MyBatis使用XML文件或Mapper接口层来定义SQL查询和映射,提供了灵活的SQL编写和数据操作能力。
在一实施例中,所述持久性框架包括Spring Data JPA。Spring Data JPA是基于JPA(Java持久化API)的一个扩展框架,此框架简化了使用JPA进行数据持久化的开发。此框架通过提供通用的数据访问对象(Repository)来简化数据库操作,可以自动生成常用的CRUD(增删改查)方法,同时支持自定义查询。
在一实施例中,所述结构化查询语言SQL语句是一种用于管理和操作关系型数据库的编程语言。它提供了一套丰富的语法和命令,用于定义和操作数据库中的表、数据和关系。SQL语句基本语法通常包括关键字、表名、列名、条件和运算符等。通过将这些元素组合在一起,可以构建复杂的查询、更新和操作数据库的语句。SQL语句被广泛应用于各种关系型数据库管理系统(如Oracle、MySQL、SQL Server等),并且几乎所有的常见编程语言都提供了对SQL的支持和集成,以便开发人员能够通过编程访问和操作数据库。
在一实施例中,所述SQL执行语句的改动操作包括以下操作的至少之一:
插入数据(INSERT):INSERT语句用于将新行数据插入到数据库表中。此语句可以通过指定列名和对应的值,或者直接指定要插入的所有列的值来完成插入操作。
更新数据(UPDATE):UPDATE语句用于更新数据库表中的现有行的数据。此语句通过指定要更新的列以及相应的新值,并使用WHERE子句来筛选要更新的行。
删除数据(DELETE):DELETE语句用于从数据库表中删除行。此语句使用WHERE子句来筛选要删除的行。
在一实施例中,所述解析SQL语句可利用ANTLR、JavaCC和JSQLParser三种SQL解析器中其中任一种SQL解析器来解析所述SQL执行语句,首先进行词法分析,将输入的SQL执行语句分解为一个个的标记或词法单元(Tokens),如关键字、表名、列名、运算符、常量等。SQL解析器将词法分析产生的词法单元组合成一棵语法树(Parse Tree)或抽象语法树(Abstract Syntax Tree,AST),以验证语法是否正确。解析器会根据SQL的语法规则进行递归下降或者其他算法处理。其次,进行语义分析,语义分析器会对语法树进行进一步的分析,在此过程中会验证SQL的语义是否正确。这包括检查表和列是否存在、检查数据类型匹配、验证约束条件、检查权限等。最后,在解析完成后,SQL解析器会对解析树进行优化。优化器会对查询进行重写或者重组,以提高查询性能。这包括优化表连接顺序、选择最佳的索引、消除冗余操作等。
在一实施例中,以ANTLR为例:所述ANTLR(ANother Tool for LanguageRecognition)解析器是一个功能强大的语言识别器和解析器生成器。它能够根据指定的语法规则生成用于识别和分析特定语言的解析器。
ANTLR解析SQL语句主要方案包括:
定义语法规则:使用ANTLR的语法规则描述语言(ANTLR Grammar)定义DDL或DML语句的语法规则。语法规则由词法规则(定义单词的语法)和语法规则(定义语法结构)组成。
生成解析器:使用ANTLR工具将定义的语法规则文件编译生成解析器。ANTLR将根据语法规则生成语法分析器代码,该代码可以识别和解析符合语法规则的DDL或DML语句。
解析输入:将要解析的DDL或DML语句输入给生成的ANTLR解析器。ANTLR解析器会根据语法规则逐个识别和解析输入的语句。
构建抽象语法树(AST):ANTLR解析器将识别和解析的语句转换为抽象语法树(AST)。AST是一种树形数据结构,表示了语句的语法结构和层次关系。
进行语义分析:可以对AST进行语义分析,以验证和处理语句中的语义错误和其他操作。这可以包括名称解析、类型检查、语义规则验证等。
执行相应操作:根据解析和语义分析的结果,可以执行相应的操作。对于DDL语句,可以执行数据库结构的创建、修改或删除操作;对于DML语句,可以执行数据库的数据操作,如插入、更新、删除和查询等。
在一实施例中,所述SQL文件是一个包含一系列SQL语句的文本文件,比如DDL语句,通常以.SQL作为文件扩展名。SQL文件用于批量执行SQL语句,从而进行数据库的初始化、导入数据、创建表和其他操作。其中,DDL语句定义了数据库/表的结构。
步骤102,获取第一解析结果及第二解析结果;
在一实施例中,所述第一解析结果是对所述SQL执行语句的解析结果。
在一实施例中,所述第二解析结果是对所述SQL文件的解析结果。
在一实施例中,所述第一解析结果和所述第二解析结果中至少包括所述目标数据库的语法树信息。
在一实施例中,所述第一解析结果可利用ANTLR、JavaCC和JSQLParser三种解析器中任一种SQL解析器来分析和解析所述SQL执行语句后,将其拆分成不同的语法单元(如关键字、表名、字段名等)后,生成对应于SQL执行语句的语法树信息,用于存储DML语句中出现的表名、字段名等关键信息。所述第二解析结果为利用ANTLR、JavaCC和JSQLParser三种解析器中任一种SQL解析器来分析和解析SQL文件,生成对应于SQL文件的语法树信息,用于存储DDL语句中出现的表名、字段名等关键信息。步骤103,比对所述第一解析结果和所述第二解析结果;
在一实施例中,所述比对所述第一解析结果和所述第二解析结果,包括:
利用指定算法比对所述第一解析结果和所述第二解析结果。
在一实施例中,可利用莱温斯坦距离Levenshtein Distance算法比对所述第一解析结果和所述第二解析结果。
在一实施例中,利用莱温斯坦距离Levenshtein Distance算法比对所述第一解析结果和所述第二解析结果,包括:对第一解析结果和第二解析结果中的的两个语法树信息进行遍历,并比较每个节点的类型、属性和关联信息。对于两个语法树中的相同位置(相同层级)的节点,计算其相似度,并对比节点的类型和属性。利用所述莱温斯坦距离Levenshtein Distance算法来计算节点之间的相似度,表示它们在结构上的差异程度。除了计算相似度,还需要比较每个节点的类型和属性,以检测是否存在类型不匹配或属性不一致的情况。例如,比较节点的数据表名、字段名、字段类型、数据表名与字段的对应关系等。根据所述莱温斯坦距离Levenshtein Distance算法计算的相似度和节点的类型/属性比较,可以确定节点是否匹配或差异较大。可以定义阈值来判断节点的相似度是否满足要求,并输出相应的比对结果。
基于此,在一实施例中,所述所述目标数据库的语法树信息包括以下信息中的至少之一:数据表名、字段名、字段类型、数据表名与字段的对应关系。
步骤104,响应于所述第一解析结果和所述第二解析结果不一致,根据所述第二解析结果中的语法树信息,更新所述SQL文件。
在一实施例中,步骤101之前还包括:
监听所述SQL执行语句。
在一实施例中,可采用持久性框架自带的监听器监听所述SQL执行语句。
在一实施例中,优选的,所述持久化框架包括MyBatis框架;
相应的,
所述监听所述SQL执行语句,包括:
监听所述MyBatis框架中XML映射文件中的SQL执行语句或/和Mapper接口层中的SQL执行语句。
在一实施例中,如果所述SQL执行语句是基于XML映射文件编写的,则监听所述MyBatis框架中XML映射文件中的SQL执行语句。
在一实施例中,如果所述SQL执行语句是基于注解的方式编写的,则监听所述MyBatis框架中Mapper接口层中的SQL执行语句。
在一实施例中,所述步骤104中,所述根据所述第二解析结果中的语法树信息,更新所述SQL文件之前,所述的SQL语句管理方法包括:
标识所述第二解析结果中与所述第一解析结果不一致的语法树信息;
发出或不发出告警提示信息。
其中,标识所述第二解析结果中与所述第一解析结果不一致的语法树信息的方式包括:
根据步骤103获取的比对结果,自动标识所述第二解析结果中与所述第一解析结果不一致的语法树信息。具体的,在一实施例中,通过Levenshtein Distance算法比较所述第二解析结果中与所述第一解析结果中的语法树信息,可以检测到DDL语句中可能不存在的表名、字段名。当检测到这些问题时,系统对报错的第一解析结果中的语法树信息的内容进行标红标,提示开发人员进行修正。
在一实施例中,标识所述第二解析结果中与所述第一解析结果不一致的语法树信息之后,可根据实际需要,发出或不发出告警提示信息。
在一实施例中,优选的发出告警提示信息,提示相关人员所述SQL执行语句与所述SQL文件不对应。
在一实施例中,所述根据所述第二解析结果中的语法树信息,更新所述SQL文件,包括:
根据所述第二解析结果中与所述第一解析结果不一致的语法树信息,将所述不一致的语法树信息对应的数据表或字段插入所述第一解析结果对应的语法树信息;
根据插入后的所述第一解析结果对应的语法树信息,更新所述SQL文件。
下面以具体的应用示例对本公开所述的一种SQL语句管理方法进行进一步说明。
如图2所示,图2为本公开应用示例提供的SQL语句管理方法的流程示意图,所述SQL语句管理方法,包括以下步骤:
步骤201,系统监听XML文件或Mapper接口层;
所述系统监听通过数据库审计功能、数据库触发器、数据库连接池监控三种方法中的其中任一方法监听持久性框架中的数据操作语言(DML)语句,如XML文件或Mapper接口层中的SQL语句,来捕获对数据表的修改操作。
步骤202,判断所述XML文件或Mapper接口层是否发生变动;
若是,则进入步骤203;
若否,则返回步骤201;
步骤203,解析DML语句,生成所述第一解析结果。解析DDL语句,生成所述第二解析结果;
所述第二解析结果利用ANTLR、JavaCC和JSQLParser三种解析器中其中任一种SQL解析器来分析和解析所述SQL执行语句,将其拆分成不同的语法单元(如关键字、表名、字段名等)后而生成,用于存储DDL语句中出现的表名、字段名等关键信息。所述第一解析结果通过利用ANTLR、JavaCC和JSQLParser三种解析器中其中任一种SQL解析器来分析和解析DML语句,从中提取出需要修改的表名和字段名等关键信息而生成。
步骤204,利用所述Levenshtein Distance算法进行解析结果对比;
所述莱温斯坦距离Levenshtein Distance算法比对所述第一解析结果和第二解析结果,主要方案为通过计算字符间的编辑操作次数来衡量两个字符串之间的不同程度。具体算法可以通过动态规划来实现,建立一个二维矩阵来保存字符串之间的编辑距离。矩阵初始状态是将一个字符串转换为另一个字符串的空操作次数,然后逐步填充矩阵并计算最小编辑距离。
步骤205,配置SQL文件与持久型框架中XML文件位置信息和/或Mapper接口层的位置信息;
步骤206,根据步骤204中的比对结果,及步骤205中的位置信息,更新所述SQL文件。
在一实施例中,所述更新所述SQL文件之前,还包括:
标识所述第二解析结果中与所述第一解析结果不一致的语法树信息。
在一实施例中,标识所述第二解析结果中与所述第一解析结果不一致的语法树信息的方式包括:
根据步骤103获取的比对结果,自动标识所述第二解析结果中与所述第一解析结果不一致的语法树信息。具体的,在一实施例中,通过Levenshtein Distance算法比较所述第二解析结果中与所述第一解析结果中的语法树信息,可以检测到DDL语句中可能不存在的表名、字段名。当检测到这些问题时,系统对报错的第一解析结果中的语法树信息的内容进行标红标,提示开发人员进行修正。
在一实施例中,所述更新所述SQL文件,包括:
根据所述第二解析结果中与所述第一解析结果不一致的语法树信息,将所述不一致的语法树信息对应的数据表或字段插入所述第一解析结果对应的语法树信息;
根据插入后的所述第一解析结果对应的语法树信息,更新所述SQL文件。
为了实现本公开实施例提供的一种SQL语句管理方法,本公开实施例还提供一种SQL语句管理装置,如图3所示。图3为本公开实施例提供的SQL语句管理装置的结构示意图,所述SQL语句管理装置300,包括:
解析单元301,用于响应于持久性框架中结构化查询语言SQL执行语句的改动操作,解析所述SQL执行语句,及解析所述SQL执行语句对应的SQL文件;所述持久性框架用于通过SQL执行语句访问目标数据库,所述目标数据库由所述SQL文件定义;
获取单元302,用于获取第一解析结果及第二解析结果;所述第一解析结果是对所述SQL执行语句的解析结果,所述第二解析结果是对所述SQL文件的解析结果;所述第一解析结果和所述第二解析结果中至少包括所述目标数据库的语法树信息;
比对单元303,用于比对所述第一解析结果和所述第二解析结果;
更新单元304,用于响应于所述第一解析结果和所述第二解析结果不一致,根据所述第二解析结果中的语法树信息,更新所述SQL文件。
在一实施例中,所述SQL语句管理装置300,还包括监听单元,监听单元用于:
监听所述SQL执行语句。
在一实施例中,所述持久化框架包括MyBatis框架。
相应的,
在一实施例中,所述监听单元,具体用于:
监听所述MyBatis框架中XML映射文件中的SQL执行语句或/和Mapper接口层中的SQL执行语句。
在一实施例中,所述获取单元302,具体用于:
获取目标数据库的语法树信息。
在一实施例中,所述目标数据库的语法树信息包括以下信息中的至少之一:
数据表名、字段名、字段类型、数据表名与字段的对应关系。
在一实施例中,所述比对单元303,具体用于:
利用指定算法比对所述第一解析结果和所述第二解析结果,所述指定算法包括莱温斯坦距离Levenshtein Distance算法。
在一实施例中,所述SQL语句管理装置300,还包括标识单元,标识单元用于:
标识所述第一解析结果中与所述第二解析结果不一致的语法树信息;
发出或不发出告警提示信息。
在一实施例中,所述更新单元304,具体用于:
根据所述第一解析结果中与所述第二解析结果不一致的语法树信息,将所述不一致的语法树信息对应的数据表或字段插入所述第一解析结果对应的语法树信息;
根据插入后的所述第一解析结果对应的语法树信息,更新所述SQL文件。
需要说明的是:上述实施例提供的SQL语句管理装置在进行SQL语句管理时,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将SQL语句管理装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的SQL语句管理装置与本公开实施例提供SQL语句管理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图4为本公开实施例提供的电子设备的硬件组成结构示意图,如图4所示,所述电子设备400包括至少一个处理器402;以及与所述至少一个处理器402通信连接的存储器401;其中,所述存储器401存储有可被所述至少一个处理器402执行的指令,所述指令被所述至少一个处理器402执行,以实现本公开实施例所述的SQL语句管理方法的步骤。
可选地,该电子设备具体可为本申请实施例的SQL语句管理装置,并且该电子设备可以实现本申请实施例的各个方法中由SQL语句管理装置实现的相应流程,为了简洁,在此不再赘述。
可理解,电子设备中还包括通信接口403。电子设备中的各个组件通过总线系统404耦合在一起。可理解,总线系统404用于实现这些组件之间的连接通信。总线系统404除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图4中将各种总线都标为总线系统404。
可以理解,存储器401可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read Only Memory)、磁性随机存取存储器(FRAM,ferromagnetic random access memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD ROM,Compact Disc Read Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random AccessMemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static Random Access Memory)、动态随机存取存储器(DRAM,Dynamic Random Access Memory)、同步动态随机存取存储器(SDRAM,SynchronousDynamic Random Access Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data Rate Synchronous Dynamic Random Access Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic Random Access Memory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random Access Memory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus Random Access Memory)。本发明实施例描述的存储器401旨在包括但不限于这些和任意其它适合类型的存储器。
上述本公开实施例揭示的方法可以应用于处理器402中,或者由处理器402实现。处理器402可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器402中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器402可以是通用处理器、DSP,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器402可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器401,处理器402读取存储器401中的信息,结合其硬件完成前述方法的步骤。
在示例性实施例中,电子设备可以被一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,ProgrammableLogic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、FPGA、通用处理器、控制器、MCU、微处理器(Microprocessor)、或其他电子元件实现,用于执行前述方法。
本公开实施例还提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行时实现本发明实施例所述的SQL语句管理方法的步骤。
可选的,该计算机可读存储介质可应用于本申请实施例中的SQL语句管理装置,并且该计算机指令使得计算机执行本申请实施例的各个方法中由SQL语句管理装置实现的相应流程,为了简洁,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (10)

1.一种SQL语句管理方法,其特征在于,包括:
响应于持久性框架中结构化查询语言SQL执行语句的改动操作,解析所述SQL执行语句,及解析所述SQL执行语句对应的SQL文件;所述持久性框架用于通过SQL执行语句访问目标数据库,所述目标数据库由所述SQL文件定义;
获取第一解析结果及第二解析结果;所述第一解析结果是对所述SQL执行语句的解析结果,所述第二解析结果是对所述SQL文件的解析结果;所述第一解析结果和所述第二解析结果中至少包括所述目标数据库的语法树信息;
比对所述第一解析结果和所述第二解析结果;
响应于所述第一解析结果和所述第二解析结果不一致,根据所述第二解析结果中的语法树信息,更新所述SQL文件。
2.根据权利要求1所述的方法,其特征在于,所述响应于持久性框架中结构化查询语言SQL执行语句的改动操作之前,所述的方法还包括:
监听所述SQL执行语句。
3.根据权利要求2所述的方法,其特征在于,所述持久化框架包括MyBatis框架;
所述监听所述SQL执行语句,包括:
监听所述MyBatis框架中XML映射文件中的SQL执行语句或/和Mapper接口层中的SQL执行语句。
4.根据权利要求1所述的方法,其特征在于,所述目标数据库的语法树信息包括以下信息中的至少之一:
数据表名、字段名、字段类型、数据表名与字段的对应关系。
5.根据权利要求1所述的方法,其特征在于,所述比对所述第一解析结果和所述第二解析结果,包括:
利用指定算法比对所述第一解析结果和所述第二解析结果,所述指定算法包括莱温斯坦距离Levenshtein Distance算法。
6.根据权利要求1所述的方法,其特征在于,所述根据所述第二解析结果中的语法树信息,更新所述SQL文件之前,所述的方法包括:
标识所述第二解析结果中与所述第一解析结果不一致的语法树信息;
发出或不发出告警提示信息。
7.根据权利要求1所述的方法,其特征在于,所述根据所述第二解析结果中的语法树信息,更新所述SQL文件,包括:
根据所述第二解析结果中与所述第一解析结果不一致的语法树信息,将所述不一致的语法树信息对应的数据表或字段插入所述第一解析结果对应的语法树信息;
根据插入后的所述第一解析结果对应的语法树信息,更新所述SQL文件。
8.一种SQL语句管理装置,其特征在于,包括:
解析单元,用于响应于持久性框架中结构化查询语言SQL执行语句的改动操作,解析所述SQL执行语句,及解析所述SQL执行语句对应的SQL文件;所述持久性框架用于通过SQL执行语句访问目标数据库,所述目标数据库由所述SQL文件定义;
获取单元,用于获取第一解析结果及第二解析结果;所述第一解析结果是对所述SQL执行语句的解析结果,所述第二解析结果是对所述SQL文件的解析结果;所述第一解析结果和所述第二解析结果中至少包括所述目标数据库的语法树信息;
比对单元,用于比对所述第一解析结果和所述第二解析结果;
更新单元,用于响应于所述第一解析结果和所述第二解析结果不一致,根据所述第二解析结果中的语法树信息,更新所述SQL文件。
9.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1至7中任一项所述的方法。
10.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1至7中任一项所述的方法。
CN202311434065.2A 2023-10-31 2023-10-31 一种sql语句管理方法、装置、电子设备及存储介质 Pending CN117608582A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311434065.2A CN117608582A (zh) 2023-10-31 2023-10-31 一种sql语句管理方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311434065.2A CN117608582A (zh) 2023-10-31 2023-10-31 一种sql语句管理方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN117608582A true CN117608582A (zh) 2024-02-27

Family

ID=89958675

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311434065.2A Pending CN117608582A (zh) 2023-10-31 2023-10-31 一种sql语句管理方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN117608582A (zh)

Similar Documents

Publication Publication Date Title
CN111522816B (zh) 基于数据库引擎的数据处理方法、装置、终端及介质
Meziane et al. Generating natural language specifications from UML class diagrams
KR101755365B1 (ko) 레코드 포맷 정보의 관리
CN103678532B (zh) 变更语句逆向分析方法、数据库变更回退方法及系统
CN103294666A (zh) 语法编译方法、语义解析方法以及对应装置
US20070143321A1 (en) Converting recursive hierarchical data to relational data
CN111475525A (zh) 基于结构化查询语言的脱敏方法、及其相关设备
CN107766353B (zh) 一种数据库统计信息迁移的方法和设备
CN116842042A (zh) 异化数据库的通用方法、装置、电子设备及存储介质
US20230289331A1 (en) Model generation service for data retrieval
CN115840589A (zh) 一种支持异构分布式数据库的发布方法
Al-Safadi Natural language processing for conceptual modeling
CN114416771A (zh) 一种数据处理方法、装置、电子设备及存储介质
CN108008947B (zh) 一种编程语句的智能提示方法、装置、服务器及存储介质
CN112182637A (zh) 一种安全控制系统、方法、装置及存储介质
CN112783916A (zh) Sql语句审核方法及装置、存储介质及电子设备
CN114764558A (zh) 一种sql方言转换方法、装置、系统及存储介质
CN117608582A (zh) 一种sql语句管理方法、装置、电子设备及存储介质
CN115544062A (zh) 基于Apache Calcite数据血缘和影响分析的方法及系统
CN117331963B (zh) 数据访问处理方法、装置、电子设备及存储介质
CN118093621B (zh) 结构化查询语言生成方法、装置、电子设备及存储介质
CN118069689B (zh) 一种将自然语言转化为结构化查询语言的方法
CN117668024A (zh) 基于sql语句解析的数据处理和同步的方法和系统
CN117251149A (zh) 审核规则生成方法、审核系统、电子设备及可读存储介质
CN112925726A (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