CN120296026A - sql文本处理方法、装置、设备、存储介质及程序产品 - Google Patents
sql文本处理方法、装置、设备、存储介质及程序产品 Download PDFInfo
- Publication number
- CN120296026A CN120296026A CN202510346198.7A CN202510346198A CN120296026A CN 120296026 A CN120296026 A CN 120296026A CN 202510346198 A CN202510346198 A CN 202510346198A CN 120296026 A CN120296026 A CN 120296026A
- Authority
- CN
- China
- Prior art keywords
- sql
- graph
- text
- target
- sub
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/24—Querying
- G06F16/245—Query processing
- G06F16/2452—Query translation
- G06F16/24526—Internal representations for queries
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/2454—Optimisation of common expressions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种sql文本处理方法、装置、设备、存储介质及程序产品。该方法包括:基于目标sql文本对应的抽象语法树,生成目标sql文本对应的有向图;基于有向图中的图节点和边,对有向图进行图分割,并基于图分割得到的至少一个子图确定对应的至少一个sql子块;响应于调用指令,对调用指令对应的sql子块中的目标sql文本进行渲染;展示渲染后的目标sql文本。该方法能够对目标sql文本进行更准确的分割,使得分割出的每个sql子块都包含完整的语法结构和必要的逻辑信息。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种sql文本处理方法、装置、设备、存储介质及程序产品。
背景技术
在在数据库管理与优化领域,对sql文本进行智能分块是一项关键任务,旨在将复杂的sql脚本分解成独立且可管理的代码块,以提升执行效率与维护便捷性。然而,在这一领域的实践面临显著挑战,尤其是智能分块的准确度问题。
当前智能分块技术主要依赖正则表达式匹配、语法解析器或启发式规则等方法,尝试自动识别sql语句的边界,如SELECT、INSERT、UPDATE、DELETE等关键操作,以及它们之间的逻辑关系。然而,sql语言的灵活性和复杂性使得这些方法的准确度受到限制。例如,嵌套查询、动态sql生成、存储过程与触发器中的sql代码,以及跨越多行的复杂表达式,都可能干扰智能分块的准确性。
智能分块准确度低的一个直接后果是,分块后的sql语句可能无法独立运行。由于无法精确识别sql语句的起始与结束位置,分块结果中可能包含不完整的sql命令,如缺少WHERE子句、JOIN条件或必要的表名。此外,上下文信息的丢失也是一个常见问题,因为智能分块技术往往难以捕捉到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文本以及所述子图中各图节点对应的目标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文本渲染的开销,从而确保第一终端的界面流畅性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请提供的sql文本处理方法的应用环境示意图;
图2为本申请提供的sql文本处理方法的流程示意图;
图3为本申请提供的sql文本处理装置的结构示意图;
图4为本申请提供的电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
本申请实施例提供的sql文本处理方法,可以应用于如图1所示的应用环境中。其中,数据库侧的第一终端102与第一服务器104通信连接,第二终端106与第二服务器108通信连接,并且第二终端106能够与第一终端102或第一服务器104通过有线或无线方式进行直接或间接的通信连接,第二服务器108能够与第一终端102或第一服务器104通过有线或无线方式进行直接或间接的通信连接。
例如,sql文本处理方法应用于第一终端102,第一终端102能够在接收到第二终端106或第二服务器108发出的目标sql文本后,将目标sql文本存储至数据存储系统中,随后基于目标sql文本对应的抽象语法树,生成目标sql文本对应的有向图;并基于有向图中的图节点和边,对有向图进行图分割,随后基于图分割得到的至少一个子图确定对应的至少一个sql子块;sql子块包含至少部分目标sql文本;进一步的,响应于调用指令,对调用指令对应的sql子块中的目标sql文本进行渲染;最后展示渲染后的目标sql文本。其中,第一终端102、第二终端106可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。第一服务器104、第二服务器108可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
又例如,sql文本处理方法应用于第一服务器104,第一服务器104能够在接收到第二终端106或第二服务器108发出的目标sql文本后,将目标sql文本存储至数据存储系统中,随后基于目标sql文本对应的抽象语法树,生成目标sql文本对应的有向图;并基于有向图中的图节点和边,对有向图进行图分割,随后基于图分割得到的至少一个子图确定对应的至少一个sql子块;sql子块包含至少部分目标sql文本;进一步的,响应于调用指令,对调用指令对应的sql子块中的目标sql文本进行渲染;最后展示渲染后的目标sql文本。可以理解的是,数据存储系统可为独立的存储设备,或者该数据存储系统位于第一服务器104上,或者该数据存储系统位于另一终端上。
在一个实施例中,提供了一种sql文本处理方法,本实施例以该sql文本处理方法应用于第一终端进行举例说明。如图2所示,该sql文本处理方法包括:
步骤202、基于目标sql文本对应的抽象语法树,生成目标sql文本对应的有向图。
目标sql文本可以是第二终端或第二服务器发送给第一终端的,作为示例,用户可以通过第二终端的人机交互界面中的指定界面输入目标sql文本,指定界面例如可以是命令行界面、图形用户界面或应用程序界面。
用户可以是数据库管理员、开发人员或数据库的使用用户,他们根据需求编写目标sql文本,并通过终端将这些语句发送给数据库的第一终端,以对数据库中存储的元数据执行查询、更新、插入或删除语句等动作。
需要说明的是,第一终端在生成目标sql文本对应的有向图之前,需要对目标sql文本进行解析,将其转换为一个结构化的表示形式,即抽象语法树(AST)。抽象语法树是一种树状的数据结构,用于表示编程语言的语法结构,这里特指目标sql文本的语法结构。在AST中,每个节点都代表目标sql文本中的一个元素(如SELECT、FROM、WHERE等关键字,或表名、列名等标识符),而节点之间的连接则代表这些元素之间的语法关系。
进一步的,第一终端能够基于解析得到的AST,构建对应的有向图。
有向图是一种图论中的数据结构,由图节点和连接这些图节点的边组成,且连接图节点的边是有向的。有向图的图节点可以对应于AST中的节点(即目标sql文本中的元素),而有向图的边则用于表示这些元素之间的依赖关系,如逻辑或执行顺序关系。例如,在sql查询过程中,SELECT子句依赖于FROM子句来确定数据的来源,因此可以在有向图中用一条从FROM节点指向SELECT节点的有向的边来表示这种依赖关系。
步骤204、基于有向图中的图节点和边,对有向图进行图分割,并基于图分割得到的至少一个子图确定对应的至少一个sql子块;sql子块包含至少部分目标sql文本。
子图指的是从有向图中分割出来的一个较小的、相对独立的图。它包含有向图的一部分图节点和边,并保留了这些图节点和边之间的连接关系。
sql子块指的是从目标sql文本中提取出来的一个较小的、相对独立的sql文本的片段。它通常对应于图分割后得到的一个子图,并保留了该子图中图节点所代表的sql元素的依赖关系,即逻辑或执行顺序关系。
第一终端例如需要先对有向图的结构进行分析,并根据分析的结果,确定合适的图分割策略,图分割的目标是将有向图分割成多个较小的、相对独立的子图,每个子图应包含至少一个紧密相关的节点和边。
分割策略可能基于多种因素,如节点的连接密度、边的权重、以及目标sql文本的逻辑结构等。
对于分割得到的每个子图,需要将其映射回原始的目标sql文本,以确定对应的sql子块。这通常涉及识别子图中的节点在目标sql文本中的位置,并提取包含这些节点对应的目标sql文本的片段。
步骤206、响应于调用指令,对调用指令对应的sql子块中的目标sql文本进行渲染。
当第一终端从用户处的第二终端或第二服务器接收到的目标sql文本较长时,数据库侧的工作人员可以通过在第一终端的查看界面上,通过可视区域的滑动来查看不同的目标sql文本的部分。数据库侧的工作人员可以通过鼠标滚轮、触摸屏滑动、键盘快捷键等方式进行可视区域的滑动操作,此时可以以认为工作人员在第一终端的查看界面上发出了调用指令,第一终端根据工作人员的滑动操作(即调用指令),计算出新的可视区域位置,这通常涉及计算滑动距离、确定新的起始点和结束点等。其中,可视区域的滑动操作可以对应不同的sql子块中的目标sql文本,即每一次工作人员滑动可视区域,均对应选择不同的sql字块。
随后,根据新的可视区域位置,第一终端能够确定出需要加载的sql子块中的目标sql文本,并进一步对其进行自动、高效渲染。
步骤208、展示渲染后的目标sql文本。
上述sql文本处理方法,通过将SQL文本解析为语法树,并进一步转换为有向图,可以清晰地表示目标sql文本中的各个元素及其之间的关系,这种表示方式比单纯的sql文本或语法树更加直观和易于分析,在有向图中,目标sql文本的各个部分被表示为图节点和边,通过分析这些图节点和边的连接关系,可以更准确地识别出目标sql文本中的不同逻辑块或子查询,这种基于图结构的分割方法比基于文本匹配的分割方法更加灵活和准确,能够使得分割出的每个sql子块都包含完整的语法结构和必要的逻辑信息,而这意味着每个sql子块都可以作为一个独立的sql语句进行执行,而无需依赖其他sql子块或外部上下文,进一步的,通过对可视区域对应的目标sql文本进行渲染,能够提高目标sql文本的可读性,同时减少非可视区域内的目标sql文本渲染的开销,从而确保第一终端的界面流畅性。
在一些可能的实施例中,获取目标sql文本对应的抽象语法树的步骤,包括:
采用预设的解析器解析目标sql文本,生成目标sql文本对应的抽象语法树。
第一终端在执行步骤202之前,首先选择一个预设的解析器,这个解析器是专门设计用于解析sql文本的,它内置了sql语言的语法规则和词法分析器。解析器首先对目标sql文本进行词法分析,词法分析是将输入的sql文本的字符串分解成一系列有意义的词法单元(tokens)的过程,这些词法单元包括关键字(如SELECT、FROM)、标识符(如表名、列名)、操作符(如=、>)、分隔符(如逗号、分号)等。
其次,解析器在完成词法分析后,解析器进行语法分析,语法分析是根据sql语言的语法规则,将词法单元序列组织成语法树(即抽象语法树)的过程。抽象语法树是一种树状数据结构,它表示了sql语句的语法结构。
上述sql文本处理方法,通过解析器将目标sql文本转换为抽象语法树,以树状结构表示目标sql文本的语法结构,使得目标sql文本更加直观和易于理解。
在一些可能的实施例中,步骤202包括:
遍历抽象语法树,识别抽象语法树包含的各节点并进行标记;
获取目标sql文本对应目标数据库中的元数据,并基于元数据,获取各节点之间的依赖关系;
将抽象语法树包含的各节点映射为图节点,并将各节点之间的依赖关系映射为各节点对应图节点之间的边,得到有向图。
本实施例中,第一终端例如能够从抽象语法树的根节点出发,深度优先或广度优先地遍历整个树结构从而全面检查树中的每一个节点,确保无一遗漏。
其次,在遍历过程中,逐一识别抽象语法树中的各个节点,这些节点代表了目标sql文本的不同组成部分,如SELECT语句、FROM子句、WHERE条件等。对每个识别出的节点进行标记,以便后续处理。标记可能包括节点的类型、位置、值等信息。
进一步的,目标数据库的元数据即第一终端对应数据库中存储的元数据,是关于数据库结构、表、列、索引等信息的详细描述。第一终端利用获取到的元数据,分析抽象语法树中各个节点之间的依赖关系,这种依赖关系可能体现在表与表之间的关联、列与列之间的引用、函数与参数之间的关系等方面,依赖关系的识别对于理解目标sql文本的逻辑和执行计划至关重要。
更进一步的,将抽象语法树中的每个节点映射到一个有向图的对应图节点上,这一步骤建立了从树结构到图结构的转换,使得可以利用图论的方法来分析目标sql文本的结构和依赖关系。以及,根据抽象语法树中节点之间的依赖关系,在有向图中为对应的图节点之间添加边,这些边代表了图节点之间的依赖或关联,构成了有向图的核心结构。
经过上述步骤,最终得到一个完整的有向图,其中包含了抽象语法树中所有节点的图表示以及它们之间的依赖关系。
上述sql文本处理方法,通过遍历抽象语法树并识别各节点,准确地捕捉到目标sql文本中的每个组成部分,有助于减少语法错误和语义歧义,提高目标sql文本执行的准确性;并且,通过获取目标数据库中的元数据,并基于元数据确定节点之间的依赖关系,来对目标sql文本和数据库元数据进行深入理解;以及,将抽象语法树中的节点和依赖关系映射为有向图的图节点和边后,可以利用图论的方法对目标sql文本进行复杂的分析,为后续处理提供有力支持。
在一些可能的实施例中,步骤204包括:
基于有向图中的图节点和边,采用最小割算法或最大流算法,对有向图进行图分割,得到至少一个子图;
基于子图中的图节点和边,确定子图中各图节点对应的目标sql文本以及子图中各图节点对应的目标sql文本之间的依赖关系,并基于子图中各图节点对应的目标sql文本以及子图中各图节点对应的目标sql文本之间的依赖关系组成sql子块。
利用最小割算法或最大流算法对有向图进行分割。这两种算法都是图论中的经典方法,用于在有向图中找到一组边,使得移除这组边后,有向图被分割成两个或多个不连通的子图。
在最小割算法中,目标是找到一组权重最小的边的集合,使得移除这些边后有向图被分割。而在最大流算法中,通常是通过计算有向图中的最大流来间接找到最小割集。
对分割得到的每个子图,基于其中的图节点和边来确定对应的目标sql文本。由于图节点是从抽象语法树映射过来的,因此可以直接回溯到原始的目标sql文本中,找到与图节点相对应的目标sql文本的片段。
同时,还需要确定子图中各图节点之间的依赖关系。这些依赖关系可以从原始的目标sql文本的语法结构和语义中推导出来,也可以通过分析子图的结构来识别,最后,将每个子图中的SQL文本片段以及它们之间的依赖关系组合成一个SQL子块
上述sql文本处理方法,通过图分割,可以将复杂的目标sql文本分解成多个相对独立的sql子块,每个sql子块都包含了完整的目标sql文本的片段和内部依赖关系,从而提高了目标sql文本的模块化程度,这有助于降低目标sql文本的复杂性。
在一些可能的实施例中,步骤206之前,还包括:
加载sql子块中的目标sql文本,并将加载完成的sql字块存储至本地缓存中;
步骤206包括:
响应于调用指令,从本地缓存中获取调用指令对应的sql字块中的目标sql文本,并进行渲染。
第一终端例如可以预先从数据存储系统中读取目标sql文本对应的若干个sql子块中的目标sql文本,并将若干个sql子块中的目标sql文本存储到本地缓存中,本地缓存可以是第一终端内存中的一块区域,也可以是磁盘上的一个文件或数据库表。
上述sql文本处理方法,通过将若干个sql子块中的目标sql文本存储到本地缓存中,能够提高后续访问的速度和效率,当需要渲染某个sql子块中的目标sql文本时,第一终端可以直接从本地缓存中获取,而无需再次从数据库或其他存储介质中读取,从而大大提高了渲染速度。
在一些可能的实施例中,步骤206还包括:
基于子图中各图节点对应的目标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文本处理方法的限定,在此不再赘述。
在一个实施例中,如图3所示,提供了一种sql文本处理装置300,包括:
生成模块302,用于基于目标sql文本对应的抽象语法树,生成目标sql文本对应的有向图;
分割模块304,用于基于有向图中的图节点和边,对有向图进行图分割,并基于图分割得到的至少一个子图确定对应的至少一个sql子块;sql子块包含至少部分目标sql文本;
渲染模块306,用于响应于调用指令,对调用指令对应的sql子块中的目标sql文本进行渲染;
展示模块308,用于展示渲染后的目标sql文本。
在一些可能的实施例中,生成模块302还被配置为:
采用预设的解析器解析目标sql文本,生成目标sql文本对应的抽象语法树。
在一些可能的实施例中,生成模块302还被配置为:
遍历抽象语法树,识别抽象语法树包含的各节点并进行标记;
获取目标sql文本对应目标数据库中的元数据,并基于元数据,获取各节点之间的依赖关系;
将抽象语法树包含的各节点映射为图节点,并将各节点之间的依赖关系映射为各节点对应图节点之间的边,得到有向图。
在一些可能的实施例中,分割模块304还被配置为:
基于有向图中的图节点和边,采用最小割算法或最大流算法,对有向图进行图分割,得到至少一个子图;
基于子图中的图节点和边,确定子图中各图节点对应的目标sql文本以及子图中各图节点对应的目标sql文本之间的依赖关系,并基于子图中各图节点对应的目标sql文本以及子图中各图节点对应的目标sql文本之间的依赖关系组成sql子块。
在一些可能的实施例中,渲染模块306还被配置为:
加载sql子块中的目标sql文本,并将加载完成的sql字块存储至本地缓存中;
响应于调用指令,从本地缓存中获取调用指令对应的sql字块中的目标sql文本,并进行渲染。
在一些可能的实施例中,渲染模块306还被配置为:
基于子图中各图节点对应的目标sql文本以及子图中各图节点对应的目标sql文本之间的依赖关系,从sql子块中,确定出与调用指令对应的sql子块相邻的sql字块,并对与调用指令对应的sql子块相邻的sql字块中的目标sql文本进行渲染。
本实施例提供的裂缝识别装置,可执行上述方法实施例提供的方法,其实现原理和技术效果类似,本实施例此处不做赘述。
图4为本申请提供的电子设备的结构示意图。如图4所示,本实施例提供的电子设备40包括:至少一个处理器401和存储器402。可选地,该设备40还包括通信部件403。其中,处理器401、存储器402以及通信部件403通过总线404连接。
在具体实现过程中,至少一个处理器401执行存储器402存储的计算机执行指令,使得至少一个处理器401执行上述的方法。
处理器401的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
在上述的实施例中,应理解,处理器可以是中央处理单元(英文:CentralProcessing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:DigitalSignal Processor,简称:DSP)、专用集成电路(英文:Application Specific IntegratedCircuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速存储器(Random Access Memory,RAM),也可能还包括非易失性存储器(Non-volatile Memory,NVM),例如至少一个磁盘存储器。
总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(ExtendedIndustry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
本申请还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述的方法。
本申请还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当处理器执行计算机执行指令时,实现上述的方法。
上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(Application Specific IntegratedCircuits,简称:ASIC)中。当然,处理器和可读存储介质也可以作为分立组件存在于设备中。
单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段,并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求书来限制。
Claims (10)
1.一种sql文本处理方法,其特征在于,包括:
基于目标sql文本对应的抽象语法树,生成所述目标sql文本对应的有向图;
基于所述有向图中的图节点和边,对所述有向图进行图分割,并基于图分割得到的至少一个子图确定对应的至少一个sql子块;所述sql子块包含至少部分所述目标sql文本;
响应于调用指令,对所述调用指令对应的sql子块中的目标sql文本进行渲染;
展示渲染后的目标sql文本。
2.根据权利要求1所述的方法,其特征在于,获取所述目标sql文本对应的抽象语法树的步骤,包括:
采用预设的解析器解析所述目标sql文本,生成所述目标sql文本对应的抽象语法树。
3.根据权利要求1所述的方法,其特征在于,所述基于目标sql文本对应的抽象语法树,生成所述目标sql文本对应的有向图,包括:
遍历所述抽象语法树,识别所述抽象语法树包含的各节点并进行标记;
获取所述目标sql文本对应目标数据库中的元数据,并基于所述元数据,获取各所述节点之间的依赖关系;
将所述抽象语法树包含的各节点映射为图节点,并将各所述节点之间的依赖关系映射为各所述节点对应图节点之间的边,得到所述有向图。
4.根据权利要求1所述的方法,其特征在于,所述基于所述有向图中的图节点和边,对所述有向图进行图分割,并基于图分割得到的至少一个子图确定对应的至少一个sql子块,包括:
基于所述有向图中的图节点和边,采用最小割算法或最大流算法,对所述有向图进行图分割,得到至少一个所述子图;
基于所述子图中的图节点和边,确定所述子图中各图节点对应的目标sql文本以及所述子图中各图节点对应的目标sql文本之间的依赖关系,并基于所述子图中各图节点对应的目标sql文本以及所述子图中各图节点对应的目标sql文本之间的依赖关系组成所述sql子块。
5.根据权利要求4所述的方法,其特征在于,所述响应于调用指令,对所述调用指令对应的sql子块中的目标sql文本进行渲染之前,还包括:
加载所述sql子块中的目标sql文本,并将加载完成的sql字块存储至本地缓存中;
所述响应于调用指令,对所述调用指令对应的sql子块中的目标sql文本进行渲染,包括:
响应于所述调用指令,从本地缓存中获取所述调用指令对应的sql字块中的目标sql文本,并进行渲染。
6.根据权利要求1所述的方法,其特征在于,所述响应于调用指令,对所述调用指令对应的sql子块中的目标sql文本进行渲染,还包括:
基于所述子图中各图节点对应的目标sql文本以及所述子图中各图节点对应的目标sql文本之间的依赖关系,从所述sql子块中,确定出与所述调用指令对应的sql子块相邻的sql字块,并对与所述调用指令对应的sql子块相邻的sql字块中的目标sql文本进行渲染。
7.一种sql文本处理装置,其特征在于,包括:
生成模块,用于基于目标sql文本对应的抽象语法树,生成所述目标sql文本对应的有向图;
分割模块,用于基于所述有向图中的图节点和边,对所述有向图进行图分割,并基于图分割得到的至少一个子图确定对应的至少一个sql子块;所述sql子块包含至少部分所述目标sql文本;
渲染模块,用于响应于调用指令,对所述调用指令对应的sql子块中的目标sql文本进行渲染;
展示模块,用于展示渲染后的目标sql文本。
8.一种电子设备,其特征在于,包括:存储器,处理器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,使得所述处理器执行如权利要求1-6任一项所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-6任一项所述的方法。
10.一种计算机程序产品,其特征在于,包括计算机程序,该计算机程序被处理器执行时实现权利要求1-6任一项所述的方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202510346198.7A CN120296026A (zh) | 2025-03-21 | 2025-03-21 | sql文本处理方法、装置、设备、存储介质及程序产品 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202510346198.7A CN120296026A (zh) | 2025-03-21 | 2025-03-21 | sql文本处理方法、装置、设备、存储介质及程序产品 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN120296026A true CN120296026A (zh) | 2025-07-11 |
Family
ID=96284301
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202510346198.7A Pending CN120296026A (zh) | 2025-03-21 | 2025-03-21 | sql文本处理方法、装置、设备、存储介质及程序产品 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN120296026A (zh) |
-
2025
- 2025-03-21 CN CN202510346198.7A patent/CN120296026A/zh active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN111522816B (zh) | 基于数据库引擎的数据处理方法、装置、终端及介质 | |
| CN113760891B (zh) | 一种数据表的生成方法、装置、设备和存储介质 | |
| US9122540B2 (en) | Transformation of computer programs and eliminating errors | |
| CN110989991B (zh) | 检测应用程序中源代码克隆开源软件的方法及系统 | |
| US10460044B2 (en) | Methods and systems for translating natural language requirements to a semantic modeling language statement | |
| CN114416174A (zh) | 基于元数据的模型重构方法、装置、电子设备及存储介质 | |
| CN114896269A (zh) | 结构化查询语句检测方法、装置、电子设备及存储介质 | |
| CN111626585B (zh) | 脚本数据提取方法、装置、计算机设备和存储介质 | |
| CN108563561B (zh) | 一种程序隐性约束提取方法及系统 | |
| CN116225933A (zh) | 程序代码审查方法及审查装置 | |
| CN103049504A (zh) | 基于源代码查询的半自动插桩方法 | |
| CN112632333A (zh) | 查询语句生成方法、装置、设备及计算机可读存储介质 | |
| CN118445198A (zh) | 一种判空检测方法、装置、终端设备和存储介质 | |
| CN120296026A (zh) | sql文本处理方法、装置、设备、存储介质及程序产品 | |
| CN116561161A (zh) | 一种基于mysql数据库行为的数据回溯方法、系统及存储介质 | |
| CN111563363B (zh) | 一种超文本标记语言文档内容生成及解析方法 | |
| CN115658035A (zh) | 一种sql代码生成方法、装置、设备及介质 | |
| CN114089980A (zh) | 编程处理方法、装置、解释器及非易失性存储介质 | |
| CN114998038A (zh) | 异常保单处理方法及系统 | |
| CN119088835B (zh) | 一种报表的数据提取方法、系统、设备及介质 | |
| CN120162034B (zh) | 基于软件需求设计的代码管理系统及方法 | |
| CN118606354B (zh) | 程序执行方案的可视化方法、装置、电子设备及存储介质 | |
| CN119336781B (zh) | Sql生成方法、设备及计算机可读存储介质 | |
| US20260010727A1 (en) | Interaction method, electronic device, and storage medium | |
| CN113495753B (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 |