SQL语句可视化方法以及装置
技术领域
本申请涉及数据处理技术领域,特别涉及一种SQL语句可视化方法。本申请同时涉及一种SQL语句可视化装置,一种计算设备,以及一种计算机可读存储介质。
背景技术
随着互联网的发展,各行各业都在与互联网技术进行结合,创造新的适合这个时代的发展契机,在这种情况下,各个企业在互联网中大多都有数据存储,因此结构化查询语句(Structured Query Language,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语句的大纲结构图;
图5是本申请实施例提供的一种SQL语句可视化方法的处理流程图;
图6是本申请实施例提供的一种SQL语句可视化装置的结构示意图;
图7是本申请实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
在本申请一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请一个或多个实施例。在本申请一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本申请一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本发明一个或多个实施例涉及的名词术语进行解释。
SQL:结构化查询语言。
可视化:是利用计算机图形学和图像处理技术,将数据转换成图形或图像再屏幕上显示处理,再进行交互处理的理论、方法和技术。
在本申请中,提供了一种SQL语句可视化方法,本申请同时涉及一种SQL语句可视化装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
本申请提供的一种SQL语句可视化方法实施例如下:
图1示出了根据本申请实施例的一种SQL语句可视化方法的流程图,图2示出了根据本申请实施例的一种SQL语句的语法树;图3示出了根据本申请实施例的一种SQL语句的执行结构图;图4示出了根据本申请实施例的一种SQL语句的大纲结构图;其中图1包括包括步骤S102至步骤S110。
步骤S102,获取SQL语句。
实际应用中,在SQL语句比较复杂的情况下,需要花费很长的时间来理解SQL语句的执行逻辑,因此本申请通过将SQL语句的处理逻辑进行可视化,以便SQL语句的阅读和理解。
SQL是对数据库进行操作的一种语言,通常一条SQL语句是由多个语义单元及这些语义单元之间语法顺序组成的。
具体的,上述语义单元是指SQL语句中包含的“SELECT”、“FROM”、“WHERE”、“ORDERBY”等关键字、运算符或对数据库字段、数据库表等进行标识的标识信息等满足语义规则的字词;上述语法顺序是指SQL中约定的语义单元的语法规则顺序,以如下SQL语句为例:
其中,满足SQL语义规则的语义单元共有19个,这19个语义单元分别为:SELECT、a_id、a_name、b_id、b_score、FROM、table_a、JOIN、table_b、ON、table_a.a_id、=、table_b.b_id、WHERE、a_id、=、1、ORDER BY、b_score,语法顺序依次为:SELECT、a_id、a_name、b_id、b_score、FROM、table_a、JOIN、table_b、ON、table_a.a_id、=、table_b.b_id、WHERE、a_id、=、1、ORDER BY、b_score。
具体实施时,获取SQL语句的方式有很多种,有通过网络传输获取SQL语句,有通过应用程序获取的,在此并不做限制。
步骤S104,将所述SQL语句解析成语法树,所述语法树由所述SQL语句中的语义单元确定的节点数据和所述SQL语句的语法顺序确定的边数据组成。
所述解析,是指对SQL语句进行语法解析,解析完成之后会生成此SQL语句对应的语法树,实际应用中,解析的方式也是多种多样的,因此解析出的语法树也会略有不同,在此不做限制。
所述语法树,是SQL语句结构的树形表示,有利于理解SQL语句语法结构的层次,简单说,语法树就是按照SQL语句的语法规则进行推导时所形成的树,其中包括抽象语法树,一条SQL语句对应一个语法树,具体的,语法树由SQL语句中的语义单元确定的节点数据及这些SQL语句的语法顺序确定的边数据组成,其中,节点数据与语义单元具有对应关系,而每一条边数据由其连接的节点数据的起点和节点数据的终点确定。
以上述SQL语句为例,将上述SQL语句解析成语法树之后,该语法树具体如图2所示,语法树中的节点数据与SQL语句中的语义单元具有对应关系,因此该语法树有与SQL中语义单元对应的19个节点数据,分别为:SELECT、a_id、a_name、b_id、b_score、FROM、table_a、JOIN、table_b、ON、table_a.a_id、=、table_b.b_id、WHERE、a_id、=、1、ORDER BY、b_score。
除以上19个节点数据之外,该语法树还有对节点数据中的标识信息进行概述的概述节点数据,这些概述节点数据通常与对其进行处理的关键字节点数据相邻,这些关键字节点数据是指与语义单元中的关键字对应的节点数据,比如,在上述SQL语句中,针对关键字节点数据WHERE,其后连接的Where条件具体为a_id=1,而对关键字节点数据WHERE后连接的具体Where条件,在语法树中会生成一个父节点数据为Where conditions,此父节点数据Where conditions与关键字节点数据WHERE在同一层级,此父节点数据即概述节点数据。
类似的,对其他关键字节点数据需要处理的标识信息,在语法树中也会生成与这些关键字节点数据同一层级的概述节点数据,比如:Select fields,On conditions,Jointables等。
步骤S106,将所述语法树中的同级节点数据按照处理逻辑优先级进行排序。
所述同级节点数据:是指在语法树中具有同一个根节点且在同一层级的节点数据,以上述如图2所示的语法树为例,其中SELECT、Select fields、FROM、Tables、JOIN、Jointables、ON、On conditions、WHERE、Where conditions、ORDER BY、Fields这12个节点数据都在同一层级,且直接连接于同一个根节点,则这12个节点为同级节点数据。
所述处理逻辑优先级,是指SQL中约定的关键字的执行优先级,以SQL中主要包含8个关键字为例,它们的处理逻辑优先级从高到低依次为FROM,ON,JOIN,WHERE,GROUP BY,HAVING,SELECT,ORDER BY。
以上述语法树中连接于根节点的12个同级节点数据为例,将这12个同级节点数据按照上述处理逻辑优先级进行排序时,将关键字的处理信息放在该关键字之前,即将对数据库字段、数据库表等进行标识的标识信息或运算表达式放在其对应的关键字之前,则排序后的同级节点数据依次为:Tables,FROM,On conditions,ON,Join tables,JOIN,Whereconditions,WHERE,Fields,SELECT,Fields,ORDER BY。
步骤S108,按照所述排序的排序结果将所述语法树转换为节点数据列表和边数据列表。
所述节点数据列表:是指在语法树中将同级节点数据进行排序之后遍历语法树获得的有序的节点数据集合;相应的,所述边数据列表:是指有序的边数据集合。
具体实施时,本申请实施例提供的一种可选实施方式中,所述按照所述排序的排序结果将所述语法树转换为节点数据列表和边数据列表,具体采用如下方式实现:
按照所述排序结果将所述语法树转换为所述节点数据列表;
根据所述节点数据列表中节点数据的前后顺序以及处理逻辑规则,构建所述边数据列表。
所述按照所述排序结果将所述语法树转换为所述节点数据列表,是指按照上述步骤S106中对同级节点按照处理逻辑优先级进行排序的排序结果,遍历语法树中的节点数据,即在遍历语法树的过程中,按照节点数据的执行顺序,依次将与SQL语义单元对应的节点数据写入列表,遍历完成后,获得节点数据列表,即有执行顺序的节点数据集合。
此外,还可以将上述概述节点数据也写入节点数据列表,用于构建执行结构图,其具体实现方式与上述实现方式类似,在此不做赘述。
在获得节点数据列表之后,根据节点数据列表中节点数据的前后顺序以及SQL中约定的处理逻辑规则,构建所述边数据列表,是指根据节点数据列表中节点数据的前后顺序,以及上述SQL中约定的关键字和其处理的标识信息或运算表达式之间的连接关系,将节点数据列表中的节点数据,分别作为边数据列表中边数据的起点及终点,构建边数据列表,即有执行顺序的边数据集合。
具体实施时,按照所述排序的排序结果将所述语法树转换为节点数据列表,包括采用深度优先遍历算法遍历语法树中的节点数据,按照所述排序的排序结果将所述语法树中的节点数据转换为节点数据列表。
以上述SQL语句为例,按照上述排序结果将语法树转换为节点数据列表,此节点数据列表具体如下:
{table_a,FROM,table_a.a_id,=,table_b.b_id,ON,table_b,JOIN,a_id,=,1,WHERE,a_id,a_name,b_id,b_score,SELECT,b_score,ORDER BY}。
根据所述节点数据列表中节点数据的前后顺序以及处理逻辑规则,构建的边数据列表中的边数据依次如下所示:
{start(table_a),end(FROM)},
{start(FROM),end(table_a.a_id)},
{start(table_a.a_id),end(=)},
{start(table_b.b_id),end(=)},
{start(=),end(ON)},
{start(ON),end(JOIN)},
{start(table_b,end(JOIN)},
{start(JOIN),end(a_id)},
{start(a_id),end(=)},
{start(1),end(=)},
{start(=),end(WHERE)},
{start(WHERE),end(a_id)},
{start(a_id),end(SELECT)},
{start(a_name),end(SELECT)},
{start(b_id),end(SELECT)},
{start(b_score),end(SELECT)},
{start(SELECT),end(b_score)},
{start(b_score),end(ORDER BY)}。
本申请实施例,通过根据处理逻辑优先级将语法树转换为节点数据列表,并根据节点数据列表构建边数据列表,保证了节点数据和边数据之间有顺序执行的关联关系,为后续对节点数据列表和边数据列表进行渲染提供了便利。
步骤S110,将所述节点数据列表和所述边数据列表进行渲染,获得所述SQL语句的执行结构图。
所述渲染,是将上述步骤S108中生成的节点数据列表中的节点数据和边数据列表中的边数据进行布局生成SQL语句对应的执行结构并对此执行结构进行形状、样式和/或颜色等方面的效果修饰。
所述执行结构图,是SQL语句执行顺序的表示,通过此执行结构图可以清楚直观地看出此SQL语句的具体处理逻辑。
具体实施时,本申请实施例提供的第一种可选实施方式中,所述将所述节点数据列表和所述边数据列表进行渲染,获得所述SQL语句的执行结构图,具体采用如下方式实现:
将所述节点数据列表与所述边数据列表进行拼装,生成树形结构;
将所述树形结构进行渲染,获得所述执行结构图。
实际应用中,本申请实施例是将节点数据列表中表明执行顺序的节点数据和边数据列表中表明的节点数据之间的连接关系的边数据,按照SQL语句的执行顺序进行拼装,生成树形结构,并在生成树形结构后,对此树形结构,以及此树形结构中的节点和边进行形状、样式和颜色等方面的效果修饰,获得SQL语句对应的执行结构图,此执行结构图具体如图3所示。
本申请实施例,通过将语法树转换的节点数据列表与边数据列表拼装成树形结构后,对树形结构进行渲染,获得SQL语句的执行结构图,以树形结构对SQL语句的执行顺序进行描述,以便用户对SQL语句的阅读和理解。
此外,实际应用中,还通过图组件对节点数据列表和所述边数据列表进行渲染,生成执行结构图,本申请实施例提供的第二种可选实施方式中,所述将所述节点数据列表和所述边数据列表进行渲染,获得所述SQL语句的执行结构图,具体采用如下方式实现:
将所述节点数据列表与所述边数据列表输入图组件进行渲染;
将所述图组件输出的树形结构作为所述执行结构图。
所述图组件,是应用程序或渲染设备中对图进行渲染的组件,具体的,所述图组件可以是G6的图组件,在此不做限制。其中,G6是具有一套动态和富有交互的数据可视化解决方案的应用程序。
具体实施时,在图组件中对上述步骤S108生成的节点数据列表和边数据列表,按照图组件中的渲染功能进行布局渲染,生成具有特定形状、样式和颜色等效果的树形结构,并将此树形结构作为SQL语句的执行结构图。
本申请实施例,通过渲染图组件对语法树转换的节点数据列表和边数据列表进行渲染,生成SQL语句的执行结构图,可以直观的以树形结构对SQL语句的执行顺序进行描述,以便用户对SQL语句的阅读和理解。
实际应用中,获取SQL语句的方式多种多样,本申请实施例提供的一种可选实施方式中,所述获取SQL语句,包括:
通过编辑器获取所述SQL语句;
相应的,所述将所述节点数据列表和所述边数据列表进行渲染,获得所述SQL语句的执行结构图步骤执行之后,还包括:
按照所述执行结构图中的节点数据与所述编辑器中所述SQL语句中的语义单元的对应关系,建立所述节点数据与所述语义单元之间的联动关系。
所述联动关系,是指在执行结构图中的节点数据和编辑器中的语义单元之间建立互相定位的关联关系,比如,在双击执行结构图中的SELECT节点时,在编辑器中与此SELECT节点数据相对应的语义单元的会获得光标的焦点。
此外,还包括其他的定位方式,比如:与被双击的节点数据对应的语义单元会被选中或高亮显示等,在此不做限制。
实际应用中,在编辑器中编辑SQL语句后,针对此SQL语句生成了对应的执行结构图,此执行结构图中的节点数据与编辑器中SQL语句的语义单元存在对应的关系,根据此对应关系,可以通过节点数据的位置定位到编辑器中对应的语义单元,也可以通过编辑器中的语义单元定位到与之对应的节点数据。
本申请实施例,通过编辑器获取SQL语句,并建立此SQL语句的执行结构图中的节点数据与编辑器中SQL语句的语义单元之间的联动关系,便于根据执行结构图中的节点数据定位与之对应的语义单元在编辑器中的位置,也便于根据编辑器中的语义单元定位与之对应节点数据在执行结构图中的位置,在参照两者位置的情况下,使对SQL语句的阅读、理解和修改更加有效率。
此外,本申请实施例提供的一种可选实施方式中,所述将所述SQL语句解析成语法树步骤执行之后,还包括:
通过在所述语法树中筛选与预设关键节点集合中的关键节点数据匹配的节点数据,获得大纲树形结构;
将所述大纲树形结构进行渲染,获得所述生成所述SQL语句的大纲结构图。
所述预设关键节点集合,是指根据用户阅读理解SQL语句的需求,预先设置的关键节点集合,通常这些关键节点是指在SQL语句有重要功能作用的关键字。
实际应用中,在语法树的节点数据中,按照关键节点集合中的关键节点数据筛选出于关键节点数据匹配的节点数据,以这些筛选出的节点数据构建大纲树形结构,将此大纲树形结构以及其中的节点和边由树渲染组件进行形状、样式和/或颜色等方面的渲染,获得此SQL语句的大纲结构图。
以上述SQL语句为例,此SQL语句的语法树的节点数据共有19个,这19个节点数据分别是:SELECT、a_id、a_name、b_id、b_score、FROM、table_a、JOIN、table_b、ON、table_a.a_id、=、table_b.b_id、WHERE、a_id、=、1、ORDER BY、b_score,而预设关键节点集合中的关键节点数据有7个,分别为:SELECT、FROM、JOIN、ON、WHERE、ORDER BY、GROUP BY,则此语法树中与关键节点数据匹配的节点数据有5个,分别为:SELECT、FROM、JOIN、WHERE、ORDERBY,以这5个节点数据构建此SQL语句的大纲树形结构,再对此大纲树形结构以及其中的节点和连接关系进行形状、样式和/或颜色的渲染,获得此SQL语句的大纲结构图,此大纲结构图具体如图4所示。
本申请实施例,将SQL语句解析成语法树之后,生成大纲结构图,而生成此大纲结构图的步骤可在生成执行结构图的步骤之前,也可与生成执行结构图的步骤并行,或者在生成执行结构图步骤之后,在此并不限制。
本申请实施例,通过在语法树中筛选与预设关键节点集合中的关键节点数据匹配的节点数据,获得大纲树形结构,并通过对大纲树形结构进行渲染生成SQL语句的大纲结构图,使得SQL的语法结构更加的直观鲜明,便于SQL的阅读和理解。
本申请实施例提供的一种可选实施方式中,所述通过在所述语法树中筛选与预设关键节点集合中的关键节点数据匹配的节点数据,获得大纲树形结构,包括:
通过采用深度优先遍历算法遍历所述语法树,在所述语法树中筛选与所述关键节点数据匹配的节点数据,获得所述大纲树形结构。
实际应用中,通过采用深度优先遍历算法遍历语法树中的节点数据,在遍历节点数据的过程中,筛选与预设关键节点集合中的关键节点数据匹配的节点数据,再将筛选出的这些节点数据构建SQL语句的大纲结构图,此实现方式与上述构建SQL语句的大纲结构图的实施方式类似,在此不再赘述。
本申请实施例,通过采用深度优先遍历算法,在所述语法树中筛选与所述关键节点数据匹配的节点数据,使筛选数据节点的过程更加有效率,更快获得SQL语句的大纲树形节点。
在多种获取SQL语句的方式中,本申请实施例提供的一种可选实施方式中,所述获取SQL语句,包括:
通过编辑器获取所述SQL语句;
相应的,所述将所述大纲树形结构进行渲染,获得所述SQL语句的大纲结构图步骤执行之后,还包括:
按照所述大纲结构图中的节点数据与所述编辑器中所述SQL语句中的语义单元的对应关系,建立所述节点数据与所述语义单元之间的联动关系。
实际应用中,在编辑器中编辑SQL语句后,针对此SQL语句生成对应的大纲结构图,此大纲结构图中的节点数据与编辑器中SQL语句的语义单元存在对应的关系,根据此对应关系,可以通过节点数据的位置定位到编辑器中与之对应的语义单元,也可以通过编辑中的语义单元定位到与之对应的大纲结构图中的节点数据,具体实现方式与上述建立执行结构图中的节点数据与SQL语句中的语义单元的联动关系类似,在此不再赘述。
本申请实施例,通过编辑器获取SQL语句,并建立此SQL语句的大纲结构图中的节点数据与编辑器中SQL语句的语义单元之间的联动关系,便于根据大纲结构图中的节点数据定位与之对应的语义单元在编辑器中的位置,也便于根据编辑器中的语义单元定位与之对应的节点数据在大纲结构图中的位置,在参照两者位置的情况下,使对SQL语句的阅读、理解或修改更加有效率。
下述结合图2、图3和图5,对所述SQL语句可视化方法进行进一步说明,其中图5具体包括步骤S502至步骤S516。
步骤S502,通过编辑器获取所述SQL语句。
具体的,获取到的SQL语句如下所示:
步骤S504,将所述SQL语句解析成语法树,所述语法树由所述SQL语句中的语义单元确定的节点数据和所述SQL语句的语法顺序确定的边数据组成。所述语法树具体如图2所示。
步骤S506,将所述语法树中的同级节点数据按照处理逻辑优先级进行排序。
具体的,以上述语法树中,直接连接于根节点的12个同级节点数据为例,将这12个同级节点数据按照处理逻辑优先级排序后,依次为:
Tables,FROM,On conditions,ON,Join tables,JOIN,Where conditions,WHERE,Fields,SELECT,Fields,ORDER BY。
步骤S508,按照所述排序的排序结果将所述语法树转换为节点数据列表。
优选的,通过深度优先遍历算法,按照上述排序结果遍历上述语法树中的节点数据,将所述语法树转换为具有执行顺序节点数据列表,此节点数据列表如下所示:
{table_a,FROM,table_a.a_id,=,table_b.b_id,ON,table_b,JOIN,a_id,=,1,WHERE,a_id,a_name,b_id,b_score,SELECT,b_score,ORDER BY}。
步骤S510,根据所述节点数据列表中节点数据的前后顺序以及处理逻辑规则,构建所述边数据列表。
具体的,根据节点数据列表中节点数据的前后顺序以及SQL中约定的处理逻辑规则,将节点数据列表中的节点数据,分别作为边数据列表中边数据的起点及终点,构建边数据列表,即有执行顺序的边数据集合,此构建的边数据列表中的边数据依次如下所示:
{start(table_a),end(FROM)},
{start(FROM),end(table_a.a_id)},
{start(table_a.a_id),end(=)},
{start(table_b.b_id),end(=)},
{start(=),end(ON)},
{start(ON),end(JOIN)},
{start(table_b,end(JOIN)},
{start(JOIN),end(a_id)},
{start(a_id),end(=)},
{start(1),end(=)},
{start(=),end(WHERE)},
{start(WHERE),end(a_id)},
{start(a_id),end(SELECT)},
{start(a_name),end(SELECT)},
{start(b_id),end(SELECT)},
{start(b_score),end(SELECT)},
{start(SELECT),end(b_score)},
{start(b_score),end(ORDER BY)}。
步骤S512,将所述节点数据列表与所述边数据列表输入图组件进行渲染。
实际应用中,图组件对节点数据列表和边数据列表进行渲染,是对节点数据列表中的节点数据和边数据列表中的边数据进行布局,并对其布局后生成的结构进行形状、样式和/或颜色的渲染。
步骤S514,将所述图组件输出的树形结构作为所述SQL语句的执行结构图。具体的,所述执行结构图如图3所示。
步骤S516,按照所述执行结构图中的节点数据与所述编辑器中所述SQL语句中的语义单元的对应关系,建立所述节点数据与所述语义单元之间的联动关系。
通过上述联动关系,在比如双击执行结构图中节点数据WHERE时可定位到编辑器中与其对应的语义单元的位置,反之亦可。
综上所述,本申请提供的SQL语句可视化方法,通过将SQL语句解析成语法树,并将语法树转换为节点数据列表和边数据列表,并进一步将转换而得的节点数据列表和边数据列表进行渲染生成SQL语句的执行结构图,此执行结构图将SQL语句进行图形化描述,显示出SQL语句的处理逻辑,便于用户快速阅读和理解SQL语句的逻辑。
本申请提供的一种SQL语句可视化装置实施例如下:
与上述方法实施例相对应,本申请还提供了SQL语句可视化装置实施例,图6示出了本申请实施例的SQL语句可视化装置的结构示意图。如图6所示,该装置包括:
获取模块602,被配置为获取SQL语句;
解析模块604,被配置为将所述SQL语句解析成语法树,所述语法树由所述SQL语句中的语义单元确定的节点数据和所述SQL语句的语法顺序确定的边数据组成;
排序模块606,被配置为将所述语法树中的同级节点数据按照处理逻辑优先级进行排序;
转换模块608,被配置为按照所述排序的排序结果将所述语法树转换为节点数据列表和边数据列表;
渲染模块610,被配置为将所述节点数据列表和所述边数据列表进行渲染,获得所述SQL语句的执行结构图。
可选的,所述SQL语句可视化装置,还包括:
筛选模块,被配置为通过在所述语法树中筛选与预设关键节点集合中的关键节点数据匹配的节点数据,获得大纲树形结构;
大纲渲染模块,被配置为将所述大纲树形结构进行渲染,获得所述SQL语句的大纲结构图。
可选的,所述转换模块608,包括:
转换子模块,被配置为按照所述排序结果将所述语法树转换为所述节点数据列表;
构建子模块,被配置为根据所述节点数据列表中节点数据的前后顺序以及处理逻辑规则,构建所述边数据列表。
可选的,所述渲染模块610,包括:
拼装子模块,被配置为将所述节点数据列表与所述边数据列表进行拼装,生成树形结构;
渲染子模块,被配置为将所述树形结构进行渲染,获得所述执行结构图。
可选的,所述渲染模块610,包括:
输入子模块,被配置为将所述节点数据列表与所述边数据列表输入图组件进行渲染;
输出子模块,被配置为将所述图组件输出的树形结构作为所述执行结构图。
可选的,所述获取模块602,具体被配置为通过编辑器获取所述SQL语句;
相应的,所述SQL语句可视化装置,还包括:
第一建立联动模块,被配置为按照所述执行结构图中的节点数据与所述编辑器中所述SQL语句中的语义单元的对应关系,建立所述节点数据与所述语义单元之间的联动关系。
可选的,所述获取模块602,具体被配置为通过编辑器获取所述SQL语句;
相应的,所述SQL语句可视化装置,还包括:
第二建立联动模块,被配置为按照所述大纲结构图中的节点数据与所述编辑器中所述SQL语句中的语义单元的对应关系,建立所述节点数据与所述语义单元之间的联动关系。
可选的,所述筛选模块,包括:
遍历筛选子模块,被配置为通过采用深度优先遍历算法遍历所述语法树,在所述语法树中筛选与所述关键节点数据匹配的节点数据,获得所述大纲树形结构。
上述为本实施例的一种SQL语句可视化装置的示意性方案。需要说明的是,该SQL语句可视化装置的技术方案与上述的SQL语句可视化方法的技术方案属于同一构思,SQL语句可视化装置的技术方案未详细描述的细节内容,均可以参见上述SQL语句可视化方法的技术方案的描述。
本申请提供的一种计算设备实施例如下:
图7示出了根据本申请一实施例的计算设备700的结构框图。该计算设备700的部件包括但不限于存储器710和处理器720。处理器720与存储器710通过总线730相连接,数据库750用于保存数据。
计算设备700还包括接入设备740,接入设备740使得计算设备700能够经由一个或多个网络760通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备740可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本申请的一个实施例中,计算设备700的上述部件以及图7中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图7所示的计算设备的结构框图仅仅是出于示例的目的,而不是对本申请范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备700可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备700还可以是移动式或静止式的服务器。
本申请提供一种计算设备,包括存储器710、处理器720及存储在存储器上并可在处理器上运行的计算机指令,所述处理器720用于执行如下计算机可执行指令:
获取SQL语句;
将所述SQL语句解析成语法树,所述语法树由所述SQL语句中的语义单元确定的节点数据和所述SQL语句的语法顺序确定的边数据组成;
将所述语法树中的同级节点数据按照处理逻辑优先级进行排序;
按照所述排序的排序结果将所述语法树转换为节点数据列表和边数据列表;
将所述节点数据列表和所述边数据列表进行渲染,获得所述SQL语句的执行结构图。
可选的,所述将所述SQL语句解析成语法树指令执行之后,所述处理器720还用于执行如下计算机可执行指令:
通过在所述语法树中筛选与预设关键节点集合中的关键节点数据匹配的节点数据,获得大纲树形结构;
将所述大纲树形结构进行渲染,获得所述SQL语句的大纲结构图。
可选的,所述按照所述排序的排序结果将所述语法树转换为节点数据列表和边数据列表,包括:
按照所述排序结果将所述语法树转换为所述节点数据列表;
根据所述节点数据列表中节点数据的前后顺序以及处理逻辑规则,构建所述边数据列表。
可选的,所述将所述节点数据列表和所述边数据列表进行渲染,获得所述SQL语句的执行结构图,包括:
将所述节点数据列表与所述边数据列表进行拼装,生成树形结构;
将所述树形结构进行渲染,获得所述执行结构图。
可选的,所述将所述节点数据列表和所述边数据列表进行渲染,获得所述SQL语句的执行结构图,包括:
将所述节点数据列表与所述边数据列表输入图组件进行渲染;
将所述图组件输出的树形结构作为所述执行结构图。
可选的,所述获取SQL语句,包括:
通过编辑器获取所述SQL语句;
相应的,所述将所述节点数据列表和所述边数据列表进行渲染,获得所述SQL语句的执行结构图指令执行之后,所述处理器720还用于执行如下计算机可执行指令:
按照所述执行结构图中的节点数据与所述编辑器中所述SQL语句中的语义单元的对应关系,建立所述节点数据与所述语义单元之间的联动关系。
可选的,所述获取SQL语句,包括:
通过编辑器获取所述SQL语句;
相应的,所述将所述大纲树形结构进行渲染,获得所述SQL语句的大纲结构图指令执行之后,所述处理器720还用于执行如下计算机可执行指令:
按照所述大纲结构图中的节点数据与所述编辑器中所述SQL语句中的语义单元的对应关系,建立所述节点数据与所述语义单元之间的联动关系。
可选的,所述通过在所述语法树中筛选与预设关键节点集合中的关键节点数据匹配的节点数据,获得大纲树形结构,包括:
通过采用深度优先遍历算法遍历所述语法树,在所述语法树中筛选与所述关键节点数据匹配的节点数据,获得所述大纲树形结构。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的SQL语句可视化方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述SQL语句可视化方法的技术方案的描述。
本申请提供的一种计算机可读存储介质实施例如下:
本申请提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时以用于:
获取SQL语句;
将所述SQL语句解析成语法树,所述语法树由所述SQL语句中的语义单元确定的节点数据和所述SQL语句的语法顺序确定的边数据组成;
将所述语法树中的同级节点数据按照处理逻辑优先级进行排序;
按照所述排序的排序结果将所述语法树转换为节点数据列表和边数据列表;
将所述节点数据列表和所述边数据列表进行渲染,获得所述SQL语句的执行结构图。
可选的,所述将所述SQL语句解析成语法树步骤执行之后,还包括:
通过在所述语法树中筛选与预设关键节点集合中的关键节点数据匹配的节点数据,获得大纲树形结构;
将所述大纲树形结构进行渲染,获得所述SQL语句的大纲结构图。
可选的,所述按照所述排序的排序结果将所述语法树转换为节点数据列表和边数据列表,包括:
按照所述排序结果将所述语法树转换为所述节点数据列表;
根据所述节点数据列表中节点数据的前后顺序以及处理逻辑规则,构建所述边数据列表。
可选的,所述将所述节点数据列表和所述边数据列表进行渲染,获得所述SQL语句的执行结构图,包括:
将所述节点数据列表与所述边数据列表进行拼装,生成树形结构;
将所述树形结构进行渲染,获得所述执行结构图。
可选的,所述将所述节点数据列表和所述边数据列表进行渲染,获得所述SQL语句的执行结构图,包括:
将所述节点数据列表与所述边数据列表输入图组件进行渲染;
将所述图组件输出的树形结构作为所述执行结构图。
可选的,所述获取SQL语句,包括:
通过编辑器获取所述SQL语句;
相应的,所述将所述节点数据列表和所述边数据列表进行渲染,获得所述SQL语句的执行结构图步骤执行之后,还包括:
按照所述执行结构图中的节点数据与所述编辑器中所述SQL语句中的语义单元的对应关系,建立所述节点数据与所述语义单元之间的联动关系。
可选的,所述获取SQL语句,包括:
通过编辑器获取所述SQL语句;
相应的,所述将所述大纲树形结构进行渲染,获得所述SQL语句的大纲结构图步骤执行之后,还包括:
按照所述大纲结构图中的节点数据与所述编辑器中所述SQL语句中的语义单元的对应关系,建立所述节点数据与所述语义单元之间的联动关系。
可选的,所述通过在所述语法树中筛选与预设关键节点集合中的关键节点数据匹配的节点数据,获得大纲树形结构,包括:
通过采用深度优先遍历算法遍历所述语法树,在所述语法树中筛选与所述关键节点数据匹配的节点数据,获得所述大纲树形结构。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的SQL语句可视化方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述SQL语句可视化方法的技术方案的描述。
上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本申请的内容,可作很多的修改和变化。本申请选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。