CN115237936B - 检测sql语句中字段的方法、装置、存储介质和设备 - Google Patents

检测sql语句中字段的方法、装置、存储介质和设备 Download PDF

Info

Publication number
CN115237936B
CN115237936B CN202210449365.7A CN202210449365A CN115237936B CN 115237936 B CN115237936 B CN 115237936B CN 202210449365 A CN202210449365 A CN 202210449365A CN 115237936 B CN115237936 B CN 115237936B
Authority
CN
China
Prior art keywords
field
sql
layer
information
select statement
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
Application number
CN202210449365.7A
Other languages
English (en)
Other versions
CN115237936A (zh
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.)
Beijing Haizhi Xingtu Technology Co ltd
Original Assignee
Beijing Haizhi Xingtu 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 Beijing Haizhi Xingtu Technology Co ltd filed Critical Beijing Haizhi Xingtu Technology Co ltd
Priority to CN202210449365.7A priority Critical patent/CN115237936B/zh
Publication of CN115237936A publication Critical patent/CN115237936A/zh
Application granted granted Critical
Publication of CN115237936B publication Critical patent/CN115237936B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding

Abstract

本发明实施例提供一种检测SQL语句中字段的方法,所述方法包括:通过SQL解析引擎对多个SQL字段进行解析,判断每个SQL字段是否为标准字段,当为标准字段时进行收集,当某个SQL字段为非标准字段时,将其与下一字段进行拼接,获得拼接字段,收集标准字段和拼接字段作为被创建表的字段信息,之后按照语法规则逐层查找select语句,收集每层select语句中正确的字段或者别名信息,记录每层select语句中存在错误的字段信息,最后将被创建表的字段信息与最外层select语句中的字段信息进行匹配,记录不匹配的字段信息,最后输出所有错误信息。本发明能准确判断SQL语句中字段的错误信息,提高了SQL语句中字段判断的准确性,加快了数据开发的速度,节省了人力成本和时间成本。

Description

检测SQL语句中字段的方法、装置、存储介质和设备
技术领域
本发明涉及数据处理技术领域,尤其涉及一种检测SQL语句中字段的方法、装置、存储介质和设备。
背景技术
随着大数据技术的不断SQL化,易于使用化,数据开发不再局限于标准的Hive-Sql开发,也在不断的使用Spark-Sql,更是接触了Flink-Sql开发,但是Flink-Sql比较新兴,并且有许多自己特殊语法的Sql,对初学者来说很不友好。一个经验丰富的数据开发,参考标准Hive-Sql写Flink-Sql,往往要提交集群,错误失败很多次,才能跑通,极大的浪费不必要的工作时间。
现有技术中,Spark、Flink等计算框架的SQL,提交到大数据集群上运行,都必须先启动作业、分配到资源后,才能检查SQL里的字段或字段别名,是否真的存在,是否写错了。比如写入一张表时,写入的字段数量,要和写入表的数量一致;比如嵌套、union子查询,里面会用到很多不同的表的字段,如果无法准确的判断出,哪一层哪个字段不存在,就会增加SQL开发的复杂性,需要耗费大量时间去调试。
发明内容
有鉴于此,本发明实施例提供一种检测SQL语句中字段的方法、装置、存储介质和设备,能够实时校验SQL中的语法和字段使用上逻辑
第一方面,本发明实施例提供一种检测SQL语句中字段的方法,所述方法包括:
利用分隔符对SQL语句进行分割,得到多个SQL字段;
获取SQL语法文件,并在所述SQL语法文件中添加非标准SQL语法规则,根据所述语法规则生成SQL解析引擎;
利用所述SQL解析引擎依次对每个SQL字段进行解析,根据解析结果判断每个SQL字段是否为标准字段;
当某个SQL字段为非标准字段时,将该非标准字段与下一字段进行拼接,获得拼接字段,收集所述标准字段和拼接字段作为被创建表的字段信息;
根据所述语法规则逐层查找select语句,并判断每层select语句中的字段是否为正确字段,收集每层select语句中正确的字段信息或者别名信息,记录每层select语句中存在错误的字段信息;
将所述被创建表的字段信息与最外层select语句中的字段信息进行匹配,并记录不匹配的字段信息;
输出每层select语句中存在错误的字段信息及不匹配的字段信息。
进一步的,所述非标准SQL语法规则包括:多层嵌套、递归、Spark、Flink的语法规则。
进一步的,根据解析结果判断每个SQL字段是否为标准字段包括:
若解析结果中某个SQL字段中不包含常量字符串,则判断该SQL字段为标准字段;
若解析结果中某个SQL字段中包含常量字符串,则判断该SQL字段为非标准字段。
进一步的,根据所述语法规则从最外层开始逐层查找select语句,当最外层是多selectunion的格式时,先查找最上一层的select语句。
进一步的,判断每层select语句中的字段是否为正确字段包括:
当某层select语句中的字段能够由from、join涉及的表提供时,判断该层select语句中的字段为正确的字段信息;
当某层select语句中的字段不能够由from、join涉及的表提供时,判断该层select语句中的字段为存在错误的字段信息。
进一步的,收集每层select语句中正确的字段信息或者别名信息,记录每层select语句中存在错误的字段信息之后,将所述被创建表的字段信息与最外层select语句中的字段信息进行匹配,并记录不匹配的字段信息之前,所述方法还包括:
判断是否存在嵌套子查询、union语句;
若存在嵌套子查询、union语句,则执行根据所述语法规则逐层查找select语句,并判断每层select语句中的字段是否为正确字段的步骤。
第二方面,本发明实施例提供一种检测SQL语句中字段的装置,所述装置包括:
分割模块,用于利用分隔符对SQL语句进行分割,得到多个SQL字段;
解析引擎生成模块,用于获取SQL语法文件,并在所述SQL语法文件中添加非标准SQL语法规则,根据所述语法规则生成SQL解析引擎;
第一判断模块,用于利用所述SQL解析引擎依次对每个SQL字段进行解析,根据解析结果判断每个SQL字段是否为标准字段;
第一收集模块,用于当某个SQL字段为非标准字段时,将该非标准字段与下一字段进行拼接,获得拼接字段,收集所述标准字段和拼接字段作为被创建表的字段信息;
第二判断模块,用于根据所述语法规则逐层查找select语句,并判断每层select语句中的字段是否为正确字段;
第二收集模块,用于收集每层select语句中正确的字段信息或者别名信息,记录每层select语句中存在错误的字段信息;
匹配模块,用于将所述被创建表的字段信息与最外层select语句中的字段信息进行匹配,并记录不匹配的字段信息;
输出模块,用于输出每层select语句中存在错误的字段信息及不匹配的字段信息。
第三方面,本发明实施例提供一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述第一方面任意一项所述的方法。
第四方面,本发明实施例提供一种设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述第一方面任一项所述的方法。
本发明提供的技术方案,通过SQL解析引擎对多个SQL字段进行解析,判断每个SQL字段是否为标准字段,当为标准字段时进行收集,当某个SQL字段为非标准字段时,将该非标准SQL字段与下一字段进行拼接,获得拼接字段,收集标准字段和拼接字段作为被创建表的字段信息,之后按照语法规则逐层查找select语句,收集每层select语句中正确的字段或者别名信息,记录每层select语句中存在错误的字段信息,最后将被创建表的字段信息与最外层select语句中的字段信息进行匹配,记录不匹配的字段信息,最后输出所有错误信息。由此,能够准确的判断SQL语句中任何位置出现的字段是否存在于涉及的表、子查询中,能够实时校验SQL语句中的语法和字段使用上逻辑的痛点,能够适用于对多层嵌套、递归、覆盖Spark、Flnk所有语法的SQL逻辑校验,提高了SQL语句中字段判断的准确性,加快了数据开发的速度,节省了人力成本和时间成本。
附图说明
图1是本发明实施例一提供的一种检测SQL语句中字段的方法的流程图;
图2是本发明实施例二提供的一种检测SQL语句中字段的方法的流程图;
图3是本发明实施例三提供的一种检测SQL语句中字段的装置的结构图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
参见图1,图1是本发明实施例提供的一种检测SQL语句中字段的方法的流程图,该方法包括如下步骤。
步骤11、利用分隔符对SQL语句进行分割,得到多个SQL字段。
在本步骤中,根据英文,将用户写的大团SQL语句拆分成一段段SQL字段。其中,分隔符可以是正则表达式,例如,利用正则表达式"(?<!\\\\);"来切分SQL语句,获得多个SQL字段。
步骤12、获取SQL语法文件,并在所述SQL语法文件中添加非标准SQL语法规则,根据所述语法规则生成SQL解析引擎。
在本步骤中,非标准SQL语法规则可包括:多层嵌套、递归、Spark、Flink的语法规则。SQL语法文件可以通过开源的方式获取,例如获取开源的spark语法文件SqlBase.g4,并为语法文件SqlBase.g4加上Flink特有的语法。最后根据语法规则生成SQL解析引擎。该SQL解析引擎可以使用antlr4-visitor SqlBase.g4命令生成基础Java解析工具类(antlr4解析工具),并添加详细的Java解析代码。
步骤13、利用所述SQL解析引擎依次对每个SQL字段进行解析,根据解析结果判断每个SQL字段是否为标准字段。
在一些实施例中,根据解析结果判断每个SQL字段是否为标准字段的一种可能的实施方式可包括以下步骤:
步骤121、若解析结果中某个SQL字段中不包含常量字符串,则判断该SQL字段为标准字段;
步骤122、若解析结果中某个SQL字段中包含常量字符串,则判断该SQL字段为非标准字段。
也即将步骤11中得到的多个SQL字段,按照从上往下的顺序,使用Java工具类判断每个SQL字段是否合法的。这是因为若某段SQL字段中包含常量字符串';'则会影响SQL字段的拆分结果。因为该';'会和正常的SQL语句结尾分号混淆在一起。用antlr4解析工具判断当前SQL字段是否标准字段。当解析结果显示某个SQL字段中不包含常量字符串,则判断该SQL字段为标准字段;当解析结果中某个SQL字段中包含常量字符串,则判断该SQL字段为非标准字段。
步骤14、当某个SQL字段为非标准字段时,将该非标准字段与下一字段进行拼接,获得拼接字段,收集所述标准字段和拼接字段作为被创建表的字段信息。
在本步骤中,例如:某个SQL字段包含常量字符串,则该SQL字段为非标准字段,此时将该非标准字段与下一SQL字段使用分隔符进行拼接,获得拼接字段,该分隔符可以是英文分号。
如果某个SQL字段为标准字段,则收集该标准字段。
最后将所有标准字段和拼接字段作为被创建表的字段信息。
步骤15、根据所述语法规则逐层查找select语句,并判断每层select语句中的字段是否为正确字段,收集每层select语句中正确的字段信息或者别名信息,记录每层select语句中存在错误的字段信息。
在本步骤中,开始解析insert...select...,并判断每层select语句中的字段是否能够由from、join涉及的表提供,当当某层select语句中的字段能够由from、join涉及的表提供时,判断该层select语句中的字段为正确的字段信息;当某层select语句中的字段不能够由from、join涉及的表提供时,判断该层select语句中的字段为存在错误的字段信息,收集每层select语句中正确的字段信息或者别名信息,记录每层select语句中存在错误的字段信息。
在一些实施例中,根据所述语法规则从最外层开始逐层查找select语句,当最外层是多selectunion的格式时,先查找最上一层的select语句。
步骤16、将所述被创建表的字段信息与最外层select语句中的字段信息进行匹配,并记录不匹配的字段信息。
在本步骤中,将步骤14获得的被创建表的字段信息与步骤15获得的最外层select语句中的字段信息进行匹配,例如,判断被创建表的字段数量是否与最外层select语句中的字段信息相同,如果相同,则说明被创建表的字段信息与最外层select语句中的字段信息匹配,如果不相同,则说明被创建表的字段信息与最外层select语句中的字段信息不匹配,记录为错误信息。
步骤17、输出每层select语句中存在错误的字段信息及不匹配的字段信息。
在本步骤中,将步骤15中获得的每层select语句中存在错误的字段信息及步骤16获得的不匹配的字段信息输出。由此能够快速检测SQL语句中的字段是否存在逻辑错误,提高的检测速度和准确度,节省了时间成本。
如图2所示,图2是本发明实施例二提供的检测SQL语句中字段的方法的流程图,所述方法包括:
步骤21、利用分隔符对SQL语句进行分割,得到多个SQL字段。
步骤22、获取SQL语法文件,并在所述SQL语法文件中添加非标准SQL语法规则,根据所述语法规则生成SQL解析引擎。
步骤23、利用所述SQL解析引擎依次对每个SQL字段进行解析,根据解析结果判断每个SQL字段是否为标准字段,当判断为非标准字段时,执行步骤24,当判断为标准字段时,执行步骤25。
步骤24、当某个SQL字段为非标准字段时,将该非标准字段与下一字段进行拼接,获得拼接字段。
步骤25、当某个SQL字段为标准字段时,收集该标准字段,并将所有标准字段和拼接字段作为被创建表的字段信息。
步骤26、根据所述语法规则逐层查找select语句,并判断每层select语句中的字段能否由from、join涉及的表提供,如否,则执行步骤27,如是,则执行步骤28。
步骤27、记录每层select语句中存在错误的字段信息。
步骤28、收集每层select语句中正确的字段信息或者别名信息。
步骤29、判断是否存在嵌套子查询、union语句,若存在,则执行步骤26,若不存在,则执行步骤30。
步骤30、将所述被创建表的字段信息与最外层select语句中的字段信息进行匹配,并记录不匹配的字段信息。
步骤31、输出每层select语句中存在错误的字段信息及不匹配的字段信息。
本发明提供的技术方案,通过SQL解析引擎对多个SQL字段进行解析,判断每个SQL字段是否为标准字段,当为标准字段时进行收集,当某个SQL字段为非标准字段时,将该非标准SQL字段与下一字段进行拼接,获得拼接字段,收集标准字段和拼接字段作为被创建表的字段信息,之后按照语法规则逐层查找select语句,收集每层select语句中正确的字段或者别名信息,记录每层select语句中存在错误的字段信息,最后将被创建表的字段信息与最外层select语句中的字段信息进行匹配,记录不匹配的字段信息,最后输出所有错误信息。由此,能够准确的判断SQL语句中任何位置出现的字段是否存在于涉及的表、子查询中,能够实时校验SQL语句中的语法和字段使用上逻辑的痛点,能够适用于对多层嵌套、递归、覆盖Spark、Flnk所有语法的SQL逻辑校验,提高了SQL语句中字段判断的准确性,加快了数据开发的速度,节省了人力成本和时间成本。
相应的,本发明实施例还提供一种检测SQL语句中字段的装置,参见图3,图3是本发明实施例三提供的检测SQL语句中字段的装置的结构示意图,所述装置包括:
分割模块41,用于利用分隔符对SQL语句进行分割,得到多个SQL字段;
解析引擎生成模块42,用于获取SQL语法文件,并在所述SQL语法文件中添加非标准SQL语法规则,根据所述语法规则生成SQL解析引擎;
第一判断模块43,用于利用所述SQL解析引擎依次对每个SQL字段进行解析,根据解析结果判断每个SQL字段是否为标准字段;
第一收集模块44,用于当某个SQL字段为非标准字段时,将该非标准字段与下一字段进行拼接,获得拼接字段,收集所述标准字段和拼接字段作为被创建表的字段信息;
第二判断模块45,用于根据所述语法规则逐层查找select语句,并判断每层select语句中的字段是否为正确字段;
第二收集模块46,用于收集每层select语句中正确的字段信息或者别名信息,记录每层select语句中存在错误的字段信息;
匹配模块47,用于将所述被创建表的字段信息与最外层select语句中的字段信息进行匹配,并记录不匹配的字段信息;
输出模块48,用于输出每层select语句中存在错误的字段信息及不匹配的字段信息。
在一些优选实施例中,所述非标准SQL语法规则包括:多层嵌套、递归、Spark、Flink的语法规则。
在一些优选实施例中,第一判断模块根据解析结果进行判断,若解析结果中某个SQL字段中不包含常量字符串,则判断该SQL字段为标准字段;若解析结果中某个SQL字段中包含常量字符串,则判断该SQL字段为非标准字段。
在一些优选实施例中,第二判断模块根据所述语法规则从最外层开始逐层查找select语句,当最外层是多select union的格式时,先查找最上一层的select语句,并判断每层select语句中的字段是否为正确字段。
在一些优选实施例中,第二判断模块判断每层select语句中的字段能否由from、join涉及的表提供,当某层select语句中的字段能够由from、join涉及的表提供时,判断该层select语句中的字段为正确的字段信息;当某层select语句中的字段不能够由from、join涉及的表提供时,判断该层select语句中的字段为存在错误的字段信息。
在一些优选实施例中,所述装置还包括第三判断模块,用于判断是否存在嵌套子查询、union语句;若存在嵌套子查询、union语句,则由第二判断模块执行根据所述语法规则逐层查找select语句,并判断每层select语句中的字段是否为正确字段的操作;若不存在嵌套子查询、union语句,则由匹配模块执行将所述被创建表的字段信息与最外层select语句中的字段信息进行匹配,并记录不匹配的字段信息的操作。
本发明提供的技术方案,通过SQL解析引擎对多个SQL字段进行解析,判断每个SQL字段是否为标准字段,当为标准字段时进行收集,当某个SQL字段为非标准字段时,将该非标准SQL字段与下一字段进行拼接,获得拼接字段,收集标准字段和拼接字段作为被创建表的字段信息,之后按照语法规则逐层查找select语句,收集每层select语句中正确的字段或者别名信息,记录每层select语句中存在错误的字段信息,最后将被创建表的字段信息与最外层select语句中的字段信息进行匹配,记录不匹配的字段信息,最后输出所有错误信息。由此,能够准确的判断SQL语句中任何位置出现的字段是否存在于涉及的表、子查询中,能够实时校验SQL语句中的语法和字段使用上逻辑的痛点,能够适用于对多层嵌套、递归、覆盖Spark、Flnk所有语法的SQL逻辑校验,提高了SQL语句中字段判断的准确性,加快了数据开发的速度,节省了人力成本和时间成本。
需要说明的是,本发明实施例中的检测SQL语句中字段的装置与上述方法属于相同的发明构思,未在本装置中详述的技术细节可参见前面对方法的相关描述,在此不再赘述。
此外,本发明实施例还提供一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行前面所述的方法。
本发明实施例还提供一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行前面所述的方法。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件(例如处理器)完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的每个模块/单元可以采用硬件的形式实现,例如通过集成电路来实现其相应功能,也可以采用软件功能模块的形式实现,例如通过处理器执行存储于存储器中的程序/指令来实现其相应功能。本发明不限制于任何特定形式的硬件和软件的结合。
虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

Claims (7)

1.一种检测SQL语句中字段的方法,其特征在于,所述方法包括:
将正则表达式作为分隔符对SQL语句进行分割,得到多个SQL字段;
获取SQL语法文件,并在所述SQL语法文件中添加非标准SQL语法规则,根据所述语法规则生成SQL解析引擎;
利用所述SQL解析引擎依次对每个SQL字段进行解析,根据解析结果判断每个SQL字段是否为标准字段,其中,若解析结果中某个SQL字段中不包含常量字符串,则判断该SQL字段为标准字段;若解析结果中某个SQL字段中包含常量字符串,则判断该SQL字段为非标准字段,其中,所述常量字符串为英文分号;
当某个SQL字段为非标准字段时,利用英文分号作为分隔符将该非标准字段与下一SQL字段进行拼接,获得拼接字段,收集所述标准字段和拼接字段作为被创建表的字段信息;
根据所述语法规则逐层查找select语句,并判断每层select语句中的字段是否为正确字段,收集每层select语句中正确的字段信息或者别名信息,记录每层select语句中存在错误的字段信息;
将所述被创建表的字段信息与最外层select语句中的字段信息进行匹配,并记录不匹配的字段信息;
输出每层select语句中存在错误的字段信息及不匹配的字段信息;其中,判断每层select语句中的字段是否为正确字段包括:
当某层select语句中的字段能够由from、join涉及的表提供时,判断该层select语句中的字段为正确的字段信息;当某层select语句中的字段不能够由from、join涉及的表提供时,判断该层select语句中的字段为存在错误的字段信息。
2.根据权利要求1所述的检测SQL语句中字段的方法,其特征在于,所述非标准SQL语法规则包括:多层嵌套、递归、Spark、Flink的语法规则。
3.根据权利要求1所述的检测SQL语句中字段的方法,其特征在于,根据所述语法规则从最外层开始逐层查找select语句,当最外层是多select union的格式时,先查找最上一层的select语句。
4.根据权利要求1所述的检测SQL语句中字段的方法,其特征在于,收集每层select语句中正确的字段信息或者别名信息,记录每层select语句中存在错误的字段信息之后,将所述被创建表的字段信息与最外层select语句中的字段信息进行匹配,并记录不匹配的字段信息之前,所述方法还包括:
判断是否存在嵌套子查询、union语句;
若存在嵌套子查询、union语句,则执行根据所述语法规则逐层查找select语句,并判断每层select语句中的字段是否为正确字段的步骤。
5.一种检测SQL语句中字段的装置,其特征在于,所述装置包括:
分割模块,用于将正则表达式作为分隔符对SQL语句进行分割,得到多个SQL字段;
解析引擎生成模块,用于获取SQL语法文件,并在所述SQL语法文件中添加非标准SQL语法规则,根据所述语法规则生成SQL解析引擎;
第一判断模块,用于利用所述SQL解析引擎依次对每个SQL字段进行解析,根据解析结果判断每个SQL字段是否为标准字段,其中,若解析结果中某个SQL字段中不包含常量字符串,则判断该SQL字段为标准字段;若解析结果中某个SQL字段中包含常量字符串,则判断该SQL字段为非标准字段,其中,所述常量字符串为英文分号;
第一收集模块,用于当某个SQL字段为非标准字段时,利用英文分号作为分隔符将该非标准字段与下一SQL字段进行拼接,获得拼接字段,收集所述标准字段和拼接字段作为被创建表的字段信息;
第二判断模块,用于根据所述语法规则逐层查找select语句,并判断每层select语句中的字段是否为正确字段;
第二收集模块,用于收集每层select语句中正确的字段信息或者别名信息,记录每层select语句中存在错误的字段信息;
匹配模块,用于将所述被创建表的字段信息与最外层select语句中的字段信息进行匹配,并记录不匹配的字段信息;
输出模块,用于输出每层select语句中存在错误的字段信息及不匹配的字段信息,其中,所述第二判断模块具体用于:
当某层select语句中的字段能够由from、join涉及的表提供时,判断该层select语句中的字段为正确的字段信息;当某层select语句中的字段不能够由from、join涉及的表提供时,判断该层select语句中的字段为存在错误的字段信息。
6.一种计算机可读存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至4中任一项所述的方法。
7.一种计算机设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1至4中任一项所述的方法。
CN202210449365.7A 2022-09-14 2022-09-14 检测sql语句中字段的方法、装置、存储介质和设备 Active CN115237936B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210449365.7A CN115237936B (zh) 2022-09-14 2022-09-14 检测sql语句中字段的方法、装置、存储介质和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210449365.7A CN115237936B (zh) 2022-09-14 2022-09-14 检测sql语句中字段的方法、装置、存储介质和设备

Publications (2)

Publication Number Publication Date
CN115237936A CN115237936A (zh) 2022-10-25
CN115237936B true CN115237936B (zh) 2024-04-05

Family

ID=83667987

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210449365.7A Active CN115237936B (zh) 2022-09-14 2022-09-14 检测sql语句中字段的方法、装置、存储介质和设备

Country Status (1)

Country Link
CN (1) CN115237936B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103778185A (zh) * 2013-12-27 2014-05-07 北京天融信软件有限公司 一种用于数据库审计系统的sql语句解析方法和系统
CN109033410A (zh) * 2018-08-03 2018-12-18 韩雪松 一种基于正则与字符串切割的sql解析方法
WO2021179722A1 (zh) * 2020-10-21 2021-09-16 平安科技(深圳)有限公司 Sql语句解析方法、系统、计算机设备和存储介质
CN113722348A (zh) * 2021-06-24 2021-11-30 马上消费金融股份有限公司 结构化查询语言sql语句的处理方法、装置和电子设备
CN113900944A (zh) * 2021-10-12 2022-01-07 北京沃东天骏信息技术有限公司 一种应用于Flink SQL的逻辑验证方法和装置
CN114036183A (zh) * 2021-11-24 2022-02-11 杭州安恒信息技术股份有限公司 一种数据etl处理方法、装置、设备及介质
CN114546988A (zh) * 2022-02-09 2022-05-27 浪潮云信息技术股份公司 一种支持多字段类型markdown数据库文档转sql建表语句的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11386053B2 (en) * 2020-10-15 2022-07-12 Google Llc Automatic generation of a data model from a structured query language (SQL) statement

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103778185A (zh) * 2013-12-27 2014-05-07 北京天融信软件有限公司 一种用于数据库审计系统的sql语句解析方法和系统
CN109033410A (zh) * 2018-08-03 2018-12-18 韩雪松 一种基于正则与字符串切割的sql解析方法
WO2021179722A1 (zh) * 2020-10-21 2021-09-16 平安科技(深圳)有限公司 Sql语句解析方法、系统、计算机设备和存储介质
CN113722348A (zh) * 2021-06-24 2021-11-30 马上消费金融股份有限公司 结构化查询语言sql语句的处理方法、装置和电子设备
CN113900944A (zh) * 2021-10-12 2022-01-07 北京沃东天骏信息技术有限公司 一种应用于Flink SQL的逻辑验证方法和装置
CN114036183A (zh) * 2021-11-24 2022-02-11 杭州安恒信息技术股份有限公司 一种数据etl处理方法、装置、设备及介质
CN114546988A (zh) * 2022-02-09 2022-05-27 浪潮云信息技术股份公司 一种支持多字段类型markdown数据库文档转sql建表语句的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
正则表达式在数据库查询中的应用;李旻等;计算机工程与设计;27(第12期);2303-2305 *

Also Published As

Publication number Publication date
CN115237936A (zh) 2022-10-25

Similar Documents

Publication Publication Date Title
US11809442B2 (en) Facilitating data transformations
US11809223B2 (en) Collecting and annotating transformation tools for use in generating transformation programs
US11651014B2 (en) Source code retrieval
US20160306736A1 (en) Translation verification testing
CN114116856A (zh) 基于数据治理全链路的字段级血缘关系分析方法
CN115061908A (zh) 缺陷代码的定位方法、装置、存储介质及计算机设备
CN114385491A (zh) 一种基于深度学习的js转译器缺陷检测方法
CN115237936B (zh) 检测sql语句中字段的方法、装置、存储介质和设备
CN110008448B (zh) 将SQL代码自动转换为Java代码的方法和装置
CN109032946B (zh) 一种测试方法和装置、计算机可读存储介质
CN115292347A (zh) 一种基于规则的主动式sql算法性能检查装置及方法
CN115438341A (zh) 提取代码循环计数器的方法、装置、存储介质和电子设备
CN115238655A (zh) 一种json数据编辑方法和装置
EP3816814A1 (en) Crux detection in search definitions
CN114064606A (zh) 数据库迁移方法、装置、设备、存储介质和系统
CN112905752A (zh) 一种智能交互方法、装置、设备以及存储介质
WO2021104027A1 (zh) 代码性能检测方法、装置、设备及存储介质
CN112948419A (zh) 查询语句处理方法及装置
CN112925874A (zh) 基于案例标记的相似代码搜索方法及系统
CN111177312A (zh) 一种语法和语义融合的开源代码搜索方法
CN117290355B (zh) 一种元数据地图构建系统
CN111626585B (zh) 脚本数据提取方法、装置、计算机设备和存储介质
CN115563150B (zh) Hive SQL与执行引擎DAG的映射方法、设备及存储介质
CN111581184B (zh) 基于数据库迁移的语义对比方法及装置
CN113220800B (zh) 基于antlr的数据字段血缘分析方法及装置

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