CN111399843A - 将sql运行信息映射到sql文件的方法、系统及电子设备 - Google Patents
将sql运行信息映射到sql文件的方法、系统及电子设备 Download PDFInfo
- Publication number
- CN111399843A CN111399843A CN202010166183.XA CN202010166183A CN111399843A CN 111399843 A CN111399843 A CN 111399843A CN 202010166183 A CN202010166183 A CN 202010166183A CN 111399843 A CN111399843 A CN 111399843A
- Authority
- CN
- China
- Prior art keywords
- file
- mapping
- operation information
- keywords
- information
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/425—Lexical analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明公开将SQL运行信息映射到SQL文件的方法、系统及电子设备,其中,该方法包括步骤:获取并遍历待审核SQL文件的抽象语法树,筛选出所述抽象语法树中的有效关键字,并将所述有效关键字分别存储;获取所述有效关键字对应的运行信息,并将所述运行信息与所述有效关键字对应存储,生成运行信息映射树;遍历所述运行信息映射树,输出包含有效关键字的运行信息的SQL文件。本发明提供的将SQL运行信息映射到SQL文件的系统,采用上述方法,通过运行信息与SQL文件的结合,解决了现有技术中SQL文件审核过程中不能及时反馈SQL的运行信息所导致的SQL文件审核正确性和灵活性较低的问题。
Description
技术领域
本发明属于计算机技术领域,尤其涉及将SQL运行信息映射到SQL文件的方法、系统及电子设备。
背景技术
在大数据离线应用和业务系统中,对于SQL的使用在一定程度上不可或缺,其中,SQL不仅被大量的应用在与数据库进行交互,以获取数据集(例如Mysql等面向关系型数据库),还被广泛应用在大数据离线计算中,以降低了编写程序的难度(例如Hive等面向分析型数据仓库)。
但是,目前关系型数据库和面向分析型数据仓库等需要编写SQL进行计算的场景,用户运行SQL后,其仅能看到SQL运行整体的结果,即仅能看到SQL运行结果数据的准确性,但是并不能看到SQL中每个关键字对应的运行信息。
为保证SQL在运行结果正确的基础上,增加其运行效率、统计信息和异常原因等判断的可视化,现有技术主要在SQL运行前进行人工或者自动化审核,判断SQL运行的效率和正确性问题。例如公开号CN106980637A的发明专利提出一种SQL文件审核的方法和装置,其中方法包括:获取慢日志数据;从所述慢日志数据中提取待审核的SQL语句及与所述SQL语句匹配的基本信息;识别并解析所述SQL语句,得到解析结果;逐一按照预设的审核模板中的审核项目,对所述解析结果和/或所述基本信息进行审核,得到审核结果;根据所述审核结果生成审核结果集。该方法虽然可以提高SQL文件审核的准确性,但是仍然是基于审核模板进行相关项目的审核,属于根据经验在运行前进行的审核,真正SQL的运行结果信息并不能进行及时的反馈,正确性和灵活性有待提高。
发明内容
本发明的目的在于提供将SQL运行信息映射到SQL文件的方法、系统及电子设备,以解决现有技术中SQL文件审核过程中不能及时反馈SQL的运行信息所导致的SQL文件审核正确性和灵活性较低的问题。
为了实现上述目的,本发明提供如下技术方案:
一种将SQL运行信息映射到SQL文件的方法,包括步骤:
获取并遍历待审核SQL文件的抽象语法树,筛选出所述抽象语法树中的有效关键字,并将所述有效关键字分别存储;
获取所述有效关键字对应的运行信息,并将所述运行信息与所述有效关键字对应存储,生成运行信息映射树;
遍历所述运行信息映射树,输出包含有效关键字的运行信息的SQL文件。
优选地,对所述抽象语法树中的有效关键字的筛选具体包括::
依据SQL计算引擎的语法文件生成解析工具和映射器;
利用所述解析工具获取待审核SQL文件的抽象语法树;
使用所述映射器遍历所述抽象语法树,筛选出有效关键字并将所述有效关键字分别存储。
进一步地,依据SQL计算引擎的语法文件生成解析工具和映射器的方法包括:
按照语法分析器的语法规则编写SQL计算引擎的语法文件,或者获取SQL计算引擎适用于语法分析器的语法文件;
依据所述语法文件配置语法分析器的工具包,生成解析工具和映射接口;
定义所述映射接口,生成所述映射器。
具体地,所述解析工具包括词法分析器和语法解析器,其中,所述词法分析器从SQL文件的字符流中分离出所有单个的关键字,并将所述关键字输入所述语法解析器;所述语法解析器基于语法规则构建由所述关键字组成的抽象语法树;
所述映射接口包括监听器接口和访问者接口,分别定义所述监听器接口和所述访问者接口的关键字筛选参数,对应生成监听模式映射器和访问模式映射器。
优选地,使用所述映射器遍历所述抽象语法树,筛选出有效关键字并将所述有效关键字分别存储的方法包括:
创建运行信息映射树结构体,所述运行信息映射树结构体包括多个叶子结点,每个叶子结点对应有存储单元;
利用所述映射器遍历待审核SQL文件的抽象语法树,筛选并获取SQL抽象语法树上叶子结点对应的所有的有效关键字;
将所述有效关键字分别存储到运行信息映射树结构体的叶子结点存储单元中,并为所述有效关键字赋予唯一标识ID。
进一步地,生成所述运行信息映射树的方法包括:
在SQL计算引擎上运行待审核的SQL文件;
将所有的有效关键字及有效关键字的唯一标识ID一一对应地传递给SQL计算引擎,获取每个有效关键字的运行信息;
所述运行信息映射树结构体还包括日志映射单元,将所述有效关键字的运行信息和有效关键字的唯一标识ID一一对应地存储到所述日志映射单元中,生成完整的运行信息映射树。
较佳地,根据用户自定义的运行信息过滤条件获取每个有效关键字的有效运行信息。
优选地,输出包含有效关键字的运行信息的SQL文件包括:
遍历所述运行信息映射树,依序判断每个有效关键字的唯一标识ID所对应的日志映射单元是否为空;
若为空,则正常输出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运行信息映射到SQL文件的方法流程示意图;
图2为本发明实施例中对所述抽象语法树中的有效关键字进行筛选的方法流程示意图;
图3为本发明实施例中SQL文件映射运行信息前后的对比示意图;
图4为本发明实施例中将SQL运行信息映射到SQL文件的系统示意图;
图5为本发明实施例中电子设备的结构示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其它实施例,均属于本发明保护的范围。
实施例一
请参阅图1或图2,本发明实施例提供一种将SQL运行信息映射到SQL文件的方法,包括步骤:
获取并遍历待审核SQL文件的抽象语法树,筛选出抽象语法树中的有效关键字,并将有效关键字分别存储;
获取有效关键字对应的运行信息,并将运行信息与有效关键字对应存储,生成运行信息映射树;
遍历运行信息映射树,输出包含有效关键字的运行信息的SQL文件。
本发明实施例提供一种将SQL运行信息映射到SQL文件的方法,首先筛选出待审核SQL文件的抽象语法树中的有效关键字,并将有效关键字分别存储,避免了将SQL文件中所有关键字都获取到导致输出很多不需要的运行信息;然后将获取到的运行信息与有效关键字对应存储,生成运行信息映射树,实现了日志信息和原生SQL的映射关系。最后输出包含有效关键字的运行信息的SQL文件,即在输出SQL语句的时候,如果语句包括前面筛选出的有效关键字,则将该有效关键字的运行信息也对应输出,降低了SQL开发人员进行排查错误异常、准确性、运行耗时等工作的难度。
请参阅图2,本发明实施例提供一种将SQL运行信息映射到SQL文件的方法中,对抽象语法树中的有效关键字的筛选具体包括:
依据SQL计算引擎的语法文件生成解析工具和映射器;
利用解析工具获取待审核SQL文件的抽象语法树;
使用映射器遍历抽象语法树,筛选出有效关键字并将有效关键字分别存储。
由于一个SQL文件包含大量的关键字,不同的关键字对应不同的信息,但不是所有的关键字都需要查看运行信息,为了减少占用不必要的内存,同时提高SQL文件的审核效率,有针对性的筛选出待审核SQL文件的抽象语法树中需要查看运行信息的有效关键字,例如select、where、join等有效关键字,并将有效关键字分别存储,避免了将SQL文件中所有关键字都获取到导致输出很多不需要的运行信息。
具体地,依据SQL计算引擎的语法文件生成解析工具和映射器的方法包括:
按照语法分析器的语法规则编写SQL计算引擎的语法文件,或者获取SQL计算引擎适用于语法分析器的语法文件。
然后依据语法文件配置语法分析器的工具包,生成解析工具和映射接口;其中,解析工具包括词法分析器和语法解析器,词法分析器从SQL文件的字符流中分离出所有单个的关键字,即一个一个的单词,并将关键字输入语法解析器;语法解析器基于语法规则构建由关键字组成的抽象语法树。
映射接口包括监听器接口和访问者接口,通过定义映射接口,生成映射器。即,分别定义监听器接口和访问者接口的关键字筛选参数,对应生成监听模式映射器和访问模式映射器,用以遍历抽象语法树并且按需求筛选出需要查看运行信息的有效关键字。
例如,按照ANTLR语法规则自定义编写SparkSQL计算引擎的语法文件,但是也可以直接获取现有的SparkSQL计算引擎适用于ANTLR的语法文件。SparkSQL中的语法文件为SqlBase.g4,其中语法文件由grammar、options、import、tokens、channels、actionName、rule等部分组成。
然后配置ANTLR工具包的参数,生成词法分析器SqlBaseLexer、语法解析器SqlBaseParser和二者分别对应的tokens文件SqlBaseParser.tokens和SqlBaseLexer.tokens,还会生成监听器接口Listener和访问者接口Visitor以及二者对应的实现类。
其中,tokens文件SqlBaseParser.tokens和SqlBaseLexer.tokens主要是用来标记SQL中的关键字和数字间的映射关系,便于SQL文件的解析。例如:
ROW=206
ROWS=207
SCHEMA=208
SECOND=209
SECONDS=210
SELECT=211
……
最后,通过配置定义监听器接口和访问者接口的关键字筛选参数,对应生成两种模式的映射器:监听模式映射器MapperSqlBaseListener和访问模式映射器MapperSqlBaseVisitor,用以遍历抽象语法树并且按需求筛选出需要查看运行信息的有效关键字,避免了将SQL文件中所有关键字都获取到导致输出很多不需要的运行信息。
请继续参阅图2,本发明实施例提供一种将SQL运行信息映射到SQL文件的方法中,使用映射器遍历抽象语法树,筛选出有效关键字并将有效关键字分别存储的方法包括:
创建运行信息映射树结构体,运行信息映射树结构体包括多个叶子结点,每个叶子结点对应有存储单元;
利用映射器遍历待审核SQL文件的抽象语法树,筛选并获取SQL抽象语法树上叶子结点对应的所有的有效关键字;此处可根据需要选择监听模式映射器MapperSqlBaseListener和访问模式映射器MapperSqlBaseVisitor,其中监听模式映射器MapperSqlBaseListener采用隐性的监听遍历模式,访问模式映射器MapperSqlBaseVisitor采用显性的访问遍历模式。
最后将筛选出的有效关键字分别存储到运行信息映射树结构体的叶子结点存储单元中,并为有效关键字赋予唯一标识ID。
在具体实施中,例如选用访问模式映射器MapperSqlBaseVisitor来遍历一个SQL文件,先使用方法getChildCount()判断抽象语法树每一个结点是否为空;
如果为空,则该结点是叶子结点TerminalNode,进而判断该结点对应的关键字是否为有效关键字,如果是有效关键字,则将该有效关键字存储到运行信息映射树结构体的叶子结点存储单元SqlNode中,并为有效关键字赋予唯一标识ID;若不是有效关键字,则继续递归遍历抽象语法树;
如果不为空,则继续递归遍历抽象语法树。
最终得到一个运行信息映射树结构体,该运行信息映射树结构体的叶子结点存储单元包含有效关键字及其对应的唯一标识ID。
然后,获取有效关键字对应的运行信息,并将运行信息与有效关键字对应存储,生成运行信息映射树,具体方法包括:
在SQL计算引擎上运行待审核的SQL文件。
将所有的有效关键字及有效关键字的唯一标识ID一一对应地传递给SQL计算引擎,获取每个有效关键字的运行信息;可以根据用户自定义的运行信息过滤条件获取每个有效关键字的有效运行信息,例如只关注错误类、统计类、耗时类等运行信息。
运行信息映射树结构体还包括日志映射单元,将有效关键字的运行信息和有效关键字的唯一标识ID一一对应地存储到日志映射单元中,生成完整的运行信息映射树。需要注意的是,由于目前常规大数据基本都是分布式计算引擎进行运行计算,若SQL计算引擎为分布式计算引擎,则将运行信息映射树保存至公共的收集客户端,将每个有效关键字对应的SQL运行信息整合到日志映射单元中,能够保证运行信息的全面性,为SQL文件审核提供一个更加客观准确的参考依据,提高审核的效率和准确性。
最后,输出包含有效关键字的运行信息的SQL文件,具体方法包括:
遍历运行信息映射树,依序判断每个有效关键字的唯一标识ID所对应的日志映射单元是否为空;
若为空,则正常输出SQL语句,但不输出SQL语句所包含的有效关键字对应的运行信息;
若不为空,则输出SQL语句以及SQL语句所包含的有效关键字对应的运行信息。
请参阅图3,图3为SQL文件映射运行信息前后的对比示意图,左侧为原始的SQL文件,右侧为已将运行信息映射到有效关键字上的SQL文件,可以清楚地看到SQL语句所包含的有效关键字对应的运行信息,通过运行信息与SQL文件的结合,实现了SQL文件审核过程中及时反馈SQL的运行信息,降低了SQL开发人员进行排查错误异常、准确性、运行耗时等工作的难度,有效提高了SQL文件审核的正确性和灵活性。
实施例二
请参阅图4,本发明实施例提供一种将SQL运行信息映射到SQL文件的系统,包括关键字获取模块、运行信息获取模块以及输出模块,其中,
关键字获取模块用于获取并遍历待审核SQL文件的抽象语法树,筛选出抽象语法树中的有效关键字,并将有效关键字分别存储;
运行信息获取模块用于获取有效关键字对应的运行信息,并将运行信息与有效关键字对应存储,生成运行信息映射树;
输出模块用于遍历运行信息映射树,输出包含有效关键字的运行信息的SQL文件。
本发明提供的将SQL运行信息映射到SQL文件的系统,采用上述实施例一提供的将SQL运行信息映射到SQL文件的方法,服务于SQL编写人员,通过运行信息与SQL文件的结合,从统计信息、耗时、异常信息等方面对SQL文件进行审核,解决了现有技术中SQL文件审核过程中不能及时反馈SQL的运行信息所导致的SQL文件审核正确性和灵活性较低的问题。与现有技术相比,本发明实施例提供的将SQL运行信息映射到SQL文件的系统的有益效果与上述实施例一提供的将SQL运行信息映射到SQL文件的方法的有益效果相同,且该系统中的其他技术特征与上一实施例方法公开的特征相同,在此不做赘述。
实施例三
一种电子设备,电子设备包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行前述实施例一所述的将SQL运行信息映射到SQL文件的方法。
下面参考图5,其示出了适于用来实现本公开实施例的电子设备的结构示意图。本公开实施例中的电子设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图5示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图5所示,电子设备可以包括处理装置(例如中央处理器、图形处理器等),其可以根据存储在只读存储器(ROM)中的程序或者从存储装置加载到随机访问存储器(RAM)中的程序而执行各种适当的动作和处理。在RAM中,还存储有电子设备操作所需的各种程序和数据。处理装置、ROM以及RAM通过总线彼此相连。输入/输出(I/O)接口也连接至总线。
通常,以下系统可以连接至I/O接口:包括例如触摸屏、触摸板、键盘、鼠标、图像传感器、麦克风、加速度计、陀螺仪等的输入装置;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置;包括例如磁带、硬盘等的存储装置;以及通信装置。通信装置可以允许电子设备与其他设备进行无线或有线通信以交换数据。虽然图中示出了具有各种系统的电子设备,但是应理解的是,并不要求实施或具备所有示出的系统。可以替代地实施或具备更多或更少的系统。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置从网络上被下载和安装,或者从存储装置被安装,或者从ROM被安装。在该计算机程序被处理装置执行时,执行本公开实施例的方法中限定的上述功能。
本发明提供的电子设备,采用上述实施例一中的将SQL运行信息映射到SQL文件的方法,实现了SQL文件审核过程中及时反馈SQL的运行信息,有效提高了SQL文件审核的正确性和灵活性。与现有技术相比,本发明实施例提供的电子设备的有益效果与上述实施例一提供的将SQL运行信息映射到原生SQL方法的有益效果相同,且该电子设备中的其他技术特征与上一实施例方法公开的特征相同,在此不做赘述。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、系统或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、系统或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、系统或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:获取至少两个网际协议地址;向节点评价设备发送包括所述至少两个网际协议地址的节点评价请求,其中,所述节点评价设备从所述至少两个网际协议地址中,选取网际协议地址并返回;接收所述节点评价设备返回的网际协议地址;其中,所获取的网际协议地址指示内容分发网络中的边缘节点。
或者,上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:接收包括至少两个网际协议地址的节点评价请求;从所述至少两个网际协议地址中,选取网际协议地址;返回选取出的网际协议地址;其中,接收到的网际协议地址指示内容分发网络中的边缘节点。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,日志映射单元还可以被描述为“将有效关键字的运行信息和有效关键字的唯一标识ID对应存储的单元”。
应当理解,本公开的各部分可以用硬件、软件、固件或它们的组合来实现。
在上述实施方式的描述中,具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种将SQL运行信息映射到SQL文件的方法,其特征在于,包括步骤:
获取并遍历待审核SQL文件的抽象语法树,筛选出所述抽象语法树中的有效关键字,并将所述有效关键字分别存储;
获取所述有效关键字对应的运行信息,并将所述运行信息与所述有效关键字对应存储,生成运行信息映射树;
遍历所述运行信息映射树,输出包含有效关键字的运行信息的SQL文件。
2.根据权利要求1所述的将SQL运行信息映射到SQL文件的方法,其特征在于,对所述抽象语法树中的有效关键字的筛选具体包括:
依据SQL计算引擎的语法文件生成解析工具和映射器;
利用所述解析工具获取待审核SQL文件的抽象语法树;
使用所述映射器遍历所述抽象语法树,筛选出有效关键字并将所述有效关键字分别存储。
3.根据权利要求2所述的将SQL运行信息映射到SQL文件的方法,其特征在于,依据SQL计算引擎的语法文件生成解析工具和映射器的方法包括:
按照语法分析器的语法规则编写SQL计算引擎的语法文件,或者获取SQL计算引擎适用于语法分析器的语法文件;
依据所述语法文件配置语法分析器的工具包,生成解析工具和映射接口;
定义所述映射接口,生成所述映射器。
4.根据权利要求3所述的将SQL运行信息映射到SQL文件的方法,其特征在于,所述解析工具包括词法分析器和语法解析器,其中,所述词法分析器从SQL文件的字符流中分离出所有单个的关键字,并将所述关键字输入所述语法解析器;所述语法解析器基于语法规则构建由所述关键字组成的抽象语法树;
所述映射接口包括监听器接口和访问者接口,分别定义所述监听器接口和所述访问者接口的关键字筛选参数,对应生成监听模式映射器和访问模式映射器。
5.根据权利要求2-4中任一项所述的将SQL运行信息映射到SQL文件的方法,其特征在于,使用所述映射器遍历所述抽象语法树,筛选出有效关键字并将所述有效关键字分别存储的方法包括:
创建运行信息映射树结构体,所述运行信息映射树结构体包括多个叶子结点,每个叶子结点对应有存储单元;
利用所述映射器遍历待审核SQL文件的抽象语法树,筛选并获取SQL抽象语法树上叶子结点对应的所有的有效关键字;
将所述有效关键字分别存储到运行信息映射树结构体的叶子结点存储单元中,并为所述有效关键字赋予唯一标识ID。
6.根据权利要求5所述的将SQL运行信息映射到SQL文件的方法,其特征在于,生成所述运行信息映射树的方法包括:
在SQL计算引擎上运行待审核的SQL文件;
将所有的有效关键字及有效关键字的唯一标识ID一一对应地传递给SQL计算引擎,获取每个有效关键字的运行信息;
所述运行信息映射树结构体还包括日志映射单元,将所述有效关键字的运行信息和有效关键字的唯一标识ID一一对应地存储到所述日志映射单元中,生成完整的运行信息映射树。
7.根据权利要求6所述的将SQL运行信息映射到SQL文件的方法,其特征在于,根据用户自定义的运行信息过滤条件获取每个有效关键字的有效运行信息。
8.根据权利要求6所述的将SQL运行信息映射到SQL文件的方法,其特征在于,输出包含有效关键字的运行信息的SQL文件方法包括:
遍历所述运行信息映射树,依序判断每个有效关键字的唯一标识ID所对应的日志映射单元是否为空;
若为空,则正常输出SQL语句,但不输出SQL语句所包含的有效关键字对应的运行信息;
若不为空,则输出SQL语句以及SQL语句所包含的有效关键字对应的运行信息。
9.一种将SQL运行信息映射到SQL文件的系统,其特征在于,包括关键字获取模块、运行信息获取模块以及输出模块,其中,
所述关键字获取模块用于获取并遍历待审核SQL文件的抽象语法树,筛选出所述抽象语法树中的有效关键字,并将所述有效关键字分别存储;
所述运行信息获取模块用于获取所述有效关键字对应的运行信息,并将所述运行信息与所述有效关键字对应存储,生成运行信息映射树;
所述输出模块用于遍历所述运行信息映射树,输出包含有效关键字的运行信息的SQL文件。
10.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行前述权利要求1-8任一项所述的将SQL运行信息映射到SQL文件的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010166183.XA CN111399843B (zh) | 2020-03-11 | 2020-03-11 | 将sql运行信息映射到sql文件的方法、系统及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010166183.XA CN111399843B (zh) | 2020-03-11 | 2020-03-11 | 将sql运行信息映射到sql文件的方法、系统及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111399843A true CN111399843A (zh) | 2020-07-10 |
CN111399843B CN111399843B (zh) | 2023-08-01 |
Family
ID=71436119
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010166183.XA Active CN111399843B (zh) | 2020-03-11 | 2020-03-11 | 将sql运行信息映射到sql文件的方法、系统及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111399843B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115185525A (zh) * | 2022-05-17 | 2022-10-14 | 贝壳找房(北京)科技有限公司 | 数据倾斜代码块定位方法、装置、设备、介质及程序产品 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100088666A1 (en) * | 2008-10-03 | 2010-04-08 | Microsoft Corporation | Common intermediate representation for data scripting language |
CN106897322A (zh) * | 2015-12-21 | 2017-06-27 | 中国移动通信集团山西有限公司 | 一种数据库和文件系统的访问方法和装置 |
CN109388637A (zh) * | 2018-09-21 | 2019-02-26 | 北京京东金融科技控股有限公司 | 数据仓库信息处理方法、装置、系统、介质 |
CN110362597A (zh) * | 2019-06-28 | 2019-10-22 | 华为技术有限公司 | 一种结构化查询语言sql注入检测方法及装置 |
CN110555032A (zh) * | 2019-09-09 | 2019-12-10 | 北京搜狐新媒体信息技术有限公司 | 一种基于元数据的数据血缘关系分析方法及系统 |
-
2020
- 2020-03-11 CN CN202010166183.XA patent/CN111399843B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100088666A1 (en) * | 2008-10-03 | 2010-04-08 | Microsoft Corporation | Common intermediate representation for data scripting language |
CN106897322A (zh) * | 2015-12-21 | 2017-06-27 | 中国移动通信集团山西有限公司 | 一种数据库和文件系统的访问方法和装置 |
CN109388637A (zh) * | 2018-09-21 | 2019-02-26 | 北京京东金融科技控股有限公司 | 数据仓库信息处理方法、装置、系统、介质 |
CN110362597A (zh) * | 2019-06-28 | 2019-10-22 | 华为技术有限公司 | 一种结构化查询语言sql注入检测方法及装置 |
CN110555032A (zh) * | 2019-09-09 | 2019-12-10 | 北京搜狐新媒体信息技术有限公司 | 一种基于元数据的数据血缘关系分析方法及系统 |
Non-Patent Citations (1)
Title |
---|
葛文帅: ""业务导向的自定义大数据查询系统及其SQL解析器的设计与实现"", 《中国优秀博硕士学位论文全文数据库 信息科技辑》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115185525A (zh) * | 2022-05-17 | 2022-10-14 | 贝壳找房(北京)科技有限公司 | 数据倾斜代码块定位方法、装置、设备、介质及程序产品 |
Also Published As
Publication number | Publication date |
---|---|
CN111399843B (zh) | 2023-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109726217B (zh) | 一种数据库操作方法、装置、设备及存储介质 | |
CN108460068B (zh) | 报表导入导出的方法、装置、存储介质及终端 | |
CN110688544A (zh) | 一种查询数据库的方法、设备及存储介质 | |
CN111158795A (zh) | 报表生成方法、装置、介质及电子设备 | |
CN111694866A (zh) | 数据搜索及存储方法、数据搜索系统、装置、设备及介质 | |
CN115827436A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN111198861A (zh) | 逻辑日志的处理方法、装置及电子设备 | |
CN111399843A (zh) | 将sql运行信息映射到sql文件的方法、系统及电子设备 | |
CN112291121B (zh) | 一种数据处理方法及相关设备 | |
CN113238739A (zh) | 一种插件开发和数据获取方法、装置、电子设备及介质 | |
CN111124541A (zh) | 一种配置文件的生成方法、装置、设备及介质 | |
WO2023273539A1 (zh) | 航班查询系统业务监控方法、装置、设备及存储介质 | |
CN114328700B (zh) | 医疗数据etl任务中的数据核查方法及装置 | |
CN115291872A (zh) | 数据处理方法及电子设备和存储介质 | |
CN110753136B (zh) | 域名解析方法、装置、设备及存储介质 | |
CN110716946B (zh) | 特征规则匹配库的更新方法、装置、存储介质及电子设备 | |
CN109901983B (zh) | 自动化测试方法及装置、存储介质、电子设备 | |
CN111143346B (zh) | 标签组的差异性确定方法、装置、电子设备及可读介质 | |
CN111125759A (zh) | 数据库登录账号屏蔽方法、装置及电子设备 | |
CN110597517A (zh) | 动态解析mat文件的方法及装置 | |
CN116467178B (zh) | 数据库检测方法、装置、电子设备和计算机可读介质 | |
CN115314413B (zh) | 一种can信号测试方法及装置 | |
CN110806877B (zh) | 编程文件结构化的方法、装置、介质及电子设备 | |
CN114327875A (zh) | 一种资源迁移方法、装置、设备及存储介质 | |
CN114356176A (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 |