CN108255837B - 一种sql解析器及方法 - Google Patents

一种sql解析器及方法 Download PDF

Info

Publication number
CN108255837B
CN108255837B CN201611237519.7A CN201611237519A CN108255837B CN 108255837 B CN108255837 B CN 108255837B CN 201611237519 A CN201611237519 A CN 201611237519A CN 108255837 B CN108255837 B CN 108255837B
Authority
CN
China
Prior art keywords
sql
interface module
preset
syntax tree
data stream
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
CN201611237519.7A
Other languages
English (en)
Other versions
CN108255837A (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.)
China Mobile Communications Group Co Ltd
China Mobile Group Zhejiang Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile Group Zhejiang 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 Group Zhejiang Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN201611237519.7A priority Critical patent/CN108255837B/zh
Publication of CN108255837A publication Critical patent/CN108255837A/zh
Application granted granted Critical
Publication of CN108255837B publication Critical patent/CN108255837B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/25Integrating or interfacing systems involving database management systems
    • 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/245Query processing
    • G06F16/2455Query execution
    • G06F16/24564Applying rules; Deductive queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/253Grammatical analysis; Style critique
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • G06F40/284Lexical analysis, e.g. tokenisation or collocates

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例公开了一种SQL解析器及方法。所述SQL解析器包括:依次通信连接地输入接口模块、SQL解析引擎和输出接口模块;上述输入接口模块用于根据预设转换规则将所接收的多类型数据映射为预设格式的数据流,并发送给所述SQL解析引擎;所述SQL解析引擎用于将上述预设格式的数据流依次处理成字素流、格式文件和抽象语法树对象,并发送给所述输出接口模块;所述输出接口模块用于将所述抽象语法树对象映射成需要类型的数据流输出。所述方法基于上述SQL解析器实现。本发明可以与其他大规模项目松耦合地对接,可以单独运行SQL解析。并且,本发明可以集成到API,方便该SQL解析器与其他应用程序无缝对接,快速展现解析结果。

Description

一种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解析引擎包括:依次通信相连接的词法分析单元、语法分析单元和抽象语法树分析单元;
所述词法分析单元用于根据预设词素规则将上述预设格式的数据流映射成所述语法分析单元可识别的词素流;
所述语法分析单元用于根据预设语法规则将上述词素流编译成所述抽象语法树分析单元可识别的格式文件;
所述抽象语法树分析单元用于根据抽象语法树节点计算上述格式文件中的语法表达式以生成抽象语法树对象发送给所述输出接口模块。
可选地,所述预设词素规则包括ORACLE、DB2和MySQL数据库SQL语言对应的词素库;或者,所述预设语法规则包括每种词素类型的运算优先级。
可选地,所述预设词素规则还包括正则表达式描述。
第二方面,本发明实施例还提供了一种SQL解析方法,基于第一方面所述的SQL解析器实现,所述方法包括:
输入接口模块用于根据预设转换规则将所接收的多类型数据映射为预设格式的数据流,并发送给SQL解析引擎;
所述SQL解析引擎用于将上述预设格式的数据流依次处理成字素流、格式文件和抽象语法树对象,并发送给输出接口模块;
所述输出接口模块用于将所述抽象语法树对象映射成需要类型的数据流输出。
可选地,所述SQL解析引擎用于将上述预设格式的数据流依次处理成字素流、格式文件和抽象语法树对象的步骤包括:
根据预设词素规则将上述预设格式的数据流映射成所述语法分析单元可识别的词素流;
根据预设语法规则将上述词素流编译成所述抽象语法树分析单元可识别的格式文件;
根据抽象语法树节点计算上述格式文件中的语法表达式以生成抽象语法树对象发送给所述输出接口模块。
可选地,所述方法还包括:
若所述预设语法规无法解析部分词素流,则生成用于提示用户停止解析的第一提示框以及用于提示用户继续解析的第二提示框;
若所述第一提示框被触发时,则停止解析SQL并转入异常处理模式;
若所述第二提示框被触发时,则允许动态加载语法规则,重新进行词素流编译。
可选地,所述输入接口模块用于根据预设转换规则将所接收的多类型数据映射为预设格式的数据流的步骤包括:
获取所接收的多类型数据的具体类型;
将上述多类型数据输入到与所述具体类型相对应的接口;
所述根据预设转换规则将上述多类型数据映射为预设格式的数据流。
可选地,若所述输入接口模块集成到宿主程序时,则接收来自所述宿主程序的数据。
可选地,所述输出接口模块采用遍历算法读取所述抽象语法树对象,并根据用户需求类型输出上述所述抽象语法树对象。
由上述技术方案可知,本发明实施例通过设置输入接口模块、SQL解析引擎和输出接口模块。首先,由输入接口模块根据预设转换规则将所接收的多类型数据映射为预设格式的数据流,并发送给SQL解析引擎;然后,由SQL解析引擎用于将上述预设格式的数据流依次处理成字素流、格式文件和抽象语法树对象,并发送给输出接口模块;最后由述输出接口模块将所述抽象语法树对象映射成需要类型的数据流输出。与现有技术相比较,本发明实施例中通过设置输入接口模块识别多类型数据,不仅可以与其他大规模项目松耦合地对接,而且可以单独运行SQL解析。并且,本发明实施例可以根据使用场景对词法分析单元和语法分析单元进行配置,还可以对语法规则动态修改和加载,从而提高SQL解析器的应用范围。另外,本发明实施例还可以集成到API,方便该SQL解析器与其他应用程序无缝对接,快速展现解析结果,使SQL审查结果一目了然。
附图说明
通过参考附图会更加清楚的理解本发明的特征和优点,附图是示意性的而不应理解为对本发明进行任何限制,在附图中:
图1是本发明实施例提供的一种SQL解析器结构框图;
图2是本发明实施例提供的SQL解析方法的流程示意图;
图3是本发明实施例提供的SQL解析方法详细流程示意图;
图4是本发明实施例提供的SQL解析装置结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本发明实施例提供了一种SQL解析器,如图1所示,该SQL解析器包括:输入接口模块1、SQL解析引擎2和输出接口模块3;输入接口模块1与SQL解析引擎2通信连接,输出接口模块3与SQL解析引擎2通信连接。其中,
输入接口模块1用于根据预设转换规则将所接收的多类型数据映射为预设格式的数据流,并发送给SQL解析引擎2;
SQL解析引擎2用于将上述预设格式的数据流依次处理成字素流、格式文件和抽象语法树对象,并发送给输出接口模块3;
输出接口模块3用于将上述抽象语法树对象映射成需要类型的数据流输出。
本发明实施例中上述输入接口模块1包括多种类型数据输入的接口,每种接口对应一种预设转换规则。每种预设转换规则可以将对应接口输入的数据转换成对应类型的数据流。当然,本领域技术人员可以根据输入数据和输出数据的类型选择合适的预设转换规则,并且还可以根据具体场景确定接口数量,本发明不作限定。
实际应用中,本发明实施例中上述输入接口模块1可以接收例如文本、宿主程序接口等常用类型的数据输入,当接收到多类型数据时,该输入接口模块1首先获取所接收的多类型数据的具体类型,然后将上述多类型数据输入到该具体类型相对应的接口,由其按照预设转换规则将上述多类型数据映射为预设格式的数据流。
本发明实施例中上述SQL解析引擎2包括:词法分析单元21、语法分析单元22和抽象语法树分析单元23。如图1所示,该词法分析单元21与所述输入接口模块1通信连接,并与语法分析单元22和抽象语法树分析单元23依次通信连接。其中:
上述词法分析单元21用于根据预设词素规则将来自输入接口模块1的预设格式的数据流映射成语法分析单元22可识别的词素流。例如,上述预设词素规则包括ORACLE、DB2和MySQL数据库SQL语言对应的词素库。又如,上述预设词素规则还可以支持正则表达式描述。该预设词素规则还可以根据不同的SQL语言或者SQL规范进行动态调整,从而更适合各种SQL规范的解析。实际应用中,本发明实施例在该词法分析单元21中设置“添加”、“修改”和“删除”等功能,从而支持用户根据具体场景自定义添加、修改、删除词素库。
上述语法分析单元22用于根据预设语法规则将上述词素流编译成所述抽象语法树分析单元可识别的格式文件,然后储存在内存或者磁盘中,以供持续步骤中能够多次使用该中间结果,以防止解析过程中出现异常而需要重新SQL解析的情况。实际应用中,上述预设语法规则包括每种词素类型的运算优先级。此外,本发明实施例中语法分析单元22中预设语法规则可以根据需要进行调整,例如,根据不同的输出需求制定相应的语法解析规则,这样可以使语法分析单元22更广泛地支持不同的SQL规范。另外,本发明实施例中上述格式文件还保存了原始词素流在经过预设语法规则分析后的语法表达式,可供抽象语法树分析单元23直接计算结果。
上述抽象语法树分析单元23用于根据抽象语法树节点计算上述格式文件中的语法表达式以生成抽象语法树对象发送给所述输出接口模块3。该抽象语法树分析单元23可以根据需要选择抽象语法树节点,从而使该抽象语法树分析单元23更广泛地支持不同的SQL规范。另外,该抽象语法树分析单元23可以根据不同的输出需求制定更合适地抽象语法树对象。此外,利用该抽象语法树分析单元23可以消减不必要的语法树节点,从而降低输出接口模块3的遍历算法的维度。
上述输出接口模块3可以输出例如文本、Web前端展示、宿主程序接口等常用类型的数据。该输出接口模块3根据用户需求的具体类型,然后再将抽象语法树对象映射成上述具体类型的数据流。实际应用中,本发明实施例可以根据实际需求在该输出接口模块3中设置“添加”、“修改”和“删除”等功能,从而支持用户根据具体场景自定义添加、修改、删除的数据类型。另外,本发明实施例中可将输出接口模块3设置为开放接口API,方便地与其他应用程序进行无缝对接,与其他大规模项目松耦合地对接,从而实现独立运行以快速展现解析结果。
需要说明的是,本发明实施例还可以将该SQL解析器集成为API,
此时用户可以将该SQL解析器方便的插入到宿主程序的某个抽象数据树节点,以获取该节点的SQL解析数据。当该抽象数据树节点解析完成后又可将上述SQL解析器拔出宿主程序,而不影响宿主程序的正常使用。这样,本发明提供的SQL解析器方便用户进行调用,耦合到应用程序中,从而方便用户插拔该SQL解析器,提高该SQL解析器的应用范围。
本发明实施例中通过设置输入接口模块识别多类型数据,可接收多类型数据映射为预设格式的数据流,发送给SQL解析引擎;然后由该SQL解析引擎处理成字素流、格式文件和抽象语法树对象,并发送给输出接口模块;该输出接口模块设置为开放接口API,方便与其他应用程序进行无缝对接,而且可以单独运行SQL解析,从而快速展现解析结果,使SQL审查结果一目了然。上述SQL解析引擎可以根据具体场景动态调整词法规则、语法规则和输出数据类型,从而使该SQL解析器支持更广泛的SQL规范。最后,输出接口模块所输出的数据类型更符合用户需求,且可以消减一些抽象语法树节点,从而降低数据输出时遍历算法的资源开销,从而提高SQL解析效率。
实施例二
本发明实施例提供了一种SQL解析方法,基于实施例一所述的SQL解析器实现,如图2所示,所述方法包括:
S1、输入接口模块用于根据预设转换规则将所接收的多类型数据映射为预设格式的数据流,并发送给SQL解析引擎;
S2、SQL解析引擎用于将上述预设格式的数据流依次处理成字素流、格式文件和抽象语法树对象,并发送给输出接口模块;
S3、输出接口模块用于将所述抽象语法树对象映射成需要类型的数据流输出。
如图3所示,本发明实施例步骤S1中,输入接口模块接收如文本、宿主程序接口等常用类型的数据。当接收到多类型数据时,该输入接口模块首先获取所接收的多类型数据的具体类型,然后将上述多类型数据输入到该具体类型相对应的接口,由其按照预设转换规则将上述多类型数据映射为预设格式的数据流。实际应用中,该输入接口模块可以配置为是否集成到宿主程序运行,若配置为集成,则该输入接口模块接收宿主程序输入的数据,并将全局是否集成标志设置为是;若配置为不集成,则将全局是否集成标志设置为否。
本发明实施例步骤S2中,SQL解析引擎用于将上述预设格式的数据流依次处理成字素流、格式文件和抽象语法树对象,并发送给输出接口模块。实际应用中,上述SQL解析引擎包括词法分析单元、语法分析单元和抽象语法树分析单元。其中:
上述词法分析单元根据预设语法规则将上述预设格式的数据流映射成词素流。实际应用中,该词法分析单元默认保留业界常见SQL类型的词素库以供用户选择,例如上述预设词素规则包括ORACLE、DB2和MySQL数据库SQL语言对应的词素库。
上述语法分析单元根据预设语法规则将上述词素流编译成所述抽象语法树分析单元可识别的格式文件,储存在内存或者磁盘中。上述格式文件储存在内存中方便抽象语法树单元快速读取处理;当格式文件储存在磁盘时可以方便后续多次使用该中间结果,可以防止在最终输出完成前系统崩溃而导致SQL解析需要全部重新运行的情况。当语法分析单元在编译过程中遇到语法规则无法解析部分词素流时,则生成提示用户停止解析的第一提示框和用户提示用户继续解析的第二提示框。此时若第一提示框被触发时,则说明用户需要停止SQL解析过程,此时语法分析单元直接结束编译过程,并转到异常处理模式即作相应的异常处理,例如显示异常信息等。若第二提示框被触发时,则说明用户需要继续SQL解析,则允许动态加载语法规则,例如用户可以在该语法分析单元中添加相应的语法规则。然后该语法分析单元重新进行词素流编译。
上述抽象语法树分析单元根据抽象语法树节点计算上述格式文件中的语法表达式以生成抽象语法树对象发送给所述输出接口模块。
上述输出接口模块根据用户需求类型将利用遍历算法(例如前序遍历、中序遍历或者后序遍历)将上述抽象语法树对象输出。该输出接口模块此时查看金属是否集成标志,若配置为集成,则将数据输出到宿舍程序相应的接口中;若未集成,则映射到用户需求类型对应的接口处理。另外,该输出接口模块中可开启输出结果预期判断开关,若开启则在读取和计算抽象语法树对象时同时在后台打印出抽象语法树结构,此时尚未真正调用输出接口。若输出结果不符合预期,可通过修改抽象语法树节点并重新遍历抽象语法树对象来更新输出结果。
实施例三
图4示出本发明实施例三的SQL解析装置的结构框图。参照图4,所述SQL解析装置,包括:处理器(processor)401、存储器(memory)402、通信接口(CommunicationsInterface)403和总线404;
其中,
所述处理器401、存储器402、通信接口403通过所述总线404完成相互间的通信;
所述通信接口403用于该SQL解析装置的通信设备之间的信息传输;
所述处理器401用于调用所述存储器402中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:输入接口模块用于根据预设转换规则将所接收的多类型数据映射为预设格式的数据流,并发送给SQL解析引擎;所述SQL解析引擎用于将上述预设格式的数据流依次处理成字素流、格式文件和抽象语法树对象,并发送给输出接口模块;所述输出接口模块用于将所述抽象语法树对象映射成需要类型的数据流输出。
实施例四
本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:输入接口模块用于根据预设转换规则将所接收的多类型数据映射为预设格式的数据流,并发送给SQL解析引擎;所述SQL解析引擎用于将上述预设格式的数据流依次处理成字素流、格式文件和抽象语法树对象,并发送给输出接口模块;所述输出接口模块用于将所述抽象语法树对象映射成需要类型的数据流输出。
实施例五
本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:输入接口模块用于根据预设转换规则将所接收的多类型数据映射为预设格式的数据流,并发送给SQL解析引擎;所述SQL解析引擎用于将上述预设格式的数据流依次处理成字素流、格式文件和抽象语法树对象,并发送给输出接口模块;所述输出接口模块用于将所述抽象语法树对象映射成需要类型的数据流输出。
本发明的各个部件实施方式可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本装置中,PC通过实现因特网对设备或者装置远程控制,精准的控制设备或者装置每个操作的步骤。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样实现本发明的程序可以存储在计算机可读介质上,并且程序产生的文件或文档具有可统计性,产生数据报告和cpk报告等,能对功放进行批量测试并统计。
应该注意的是上述实施方式对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施方式。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
虽然结合附图描述了本发明的实施方式,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。

Claims (10)

1.一种SQL解析器,其特征在于,所述SQL解析器包括:输入接口模块、SQL解析引擎和输出接口模块;所述输入接口模块与所述SQL解析引擎通信连接,所述输出接口模块与所述SQL解析引擎通信连接;
所述输入接口模块用于根据预设转换规则将所接收的多类型数据映射为预设格式的数据流,并发送给所述SQL解析引擎;
所述SQL解析引擎用于将上述预设格式的数据流依次处理成字素流、格式文件和抽象语法树对象,并发送给所述输出接口模块;
所述输出接口模块用于将所述抽象语法树对象映射成需要类型的数据流输出。
2.根据权利要求1所述的SQL解析器,其特征在于,所述SQL解析引擎包括:依次通信相连接的词法分析单元、语法分析单元和抽象语法树分析单元;
所述词法分析单元用于根据预设词素规则将上述预设格式的数据流映射成所述语法分析单元可识别的词素流;
所述语法分析单元用于根据预设语法规则将上述词素流编译成所述抽象语法树分析单元可识别的格式文件;
所述抽象语法树分析单元用于根据抽象语法树节点计算上述格式文件中的语法表达式以生成抽象语法树对象发送给所述输出接口模块。
3.根据权利要求2所述的SQL解析器,其特征在于,所述预设词素规则包括ORACLE、DB2和MySQL数据库SQL语言对应的词素库;或者,所述预设语法规则包括每种词素类型的运算优先级。
4.根据权利要求3所述的SQL解析器,其特征在于,所述预设词素规则还包括正则表达式描述。
5.一种SQL解析方法,基于权利要求2~4任一项所述的SQL解析器实现,其特征在于,所述方法包括:
输入接口模块用于根据预设转换规则将所接收的多类型数据映射为预设格式的数据流,并发送给SQL解析引擎;
所述SQL解析引擎用于将上述预设格式的数据流依次处理成字素流、格式文件和抽象语法树对象,并发送给输出接口模块;
所述输出接口模块用于将所述抽象语法树对象映射成需要类型的数据流输出。
6.根据权利要求5所述的SQL解析方法,其特征在于,所述SQL解析引擎用于将上述预设格式的数据流依次处理成字素流、格式文件和抽象语法树对象的步骤包括:
根据预设词素规则将上述预设格式的数据流映射成所述语法分析单元可识别的词素流;
根据预设语法规则将上述词素流编译成所述抽象语法树分析单元可识别的格式文件;
根据抽象语法树节点计算上述格式文件中的语法表达式以生成抽象语法树对象发送给所述输出接口模块。
7.根据权利要求6所述的SQL解析方法,其特征在于,所述方法还包括:
若所述预设语法规无法解析部分词素流,则生成用于提示用户停止解析的第一提示框以及用于提示用户继续解析的第二提示框;
若所述第一提示框被触发时,则停止解析SQL并转入异常处理模式;
若所述第二提示框被触发时,则允许动态加载语法规则,重新进行词素流编译。
8.根据权利要求5所述的SQL解析方法,其特征在于,所述输入接口模块用于根据预设转换规则将所接收的多类型数据映射为预设格式的数据流的步骤包括:
获取所接收的多类型数据的具体类型;
将上述多类型数据输入到与所述具体类型相对应的接口;
所述根据预设转换规则将上述多类型数据映射为预设格式的数据流。
9.根据权利要求5~8任一项所述的SQL解析方法,其特征在于,若所述输入接口模块集成到宿主程序时,则接收来自所述宿主程序的数据。
10.根据权利要求5~8任一项所述的SQL解析方法,其特征在于,所述输出接口模块采用遍历算法读取所述抽象语法树对象,并根据用户需求类型输出上述所述抽象语法树对象。
CN201611237519.7A 2016-12-28 2016-12-28 一种sql解析器及方法 Active CN108255837B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611237519.7A CN108255837B (zh) 2016-12-28 2016-12-28 一种sql解析器及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611237519.7A CN108255837B (zh) 2016-12-28 2016-12-28 一种sql解析器及方法

Publications (2)

Publication Number Publication Date
CN108255837A CN108255837A (zh) 2018-07-06
CN108255837B true CN108255837B (zh) 2020-09-04

Family

ID=62719599

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611237519.7A Active CN108255837B (zh) 2016-12-28 2016-12-28 一种sql解析器及方法

Country Status (1)

Country Link
CN (1) CN108255837B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109408378B (zh) * 2018-09-30 2022-05-24 福建星瑞格软件有限公司 一种在大数据量下快速定位sql解析错误的测试方法及系统
CN109241104B (zh) * 2018-10-12 2021-11-02 北京聚云位智信息科技有限公司 决策型分布式数据库系统中aisql的解析器及其实现方法
CN109669952A (zh) * 2018-11-29 2019-04-23 杭州仟金顶信息科技有限公司 一种sql执行效率静态分析方法
CN110287429A (zh) * 2019-06-28 2019-09-27 百度在线网络技术(北京)有限公司 数据解析方法、装置、设备及存储介质
CN112287012B (zh) * 2020-11-26 2022-05-03 杭州火树科技有限公司 采用Spark SQL模式实现http接口调用方法
CN112363713B (zh) * 2020-11-30 2024-06-11 杭州玳数科技有限公司 一种绑定式的sql血缘解析数据流可视化交互方法
CN112765180B (zh) * 2021-01-27 2023-01-17 上海英方软件股份有限公司 一种对db2数据库建表日志列名解析的方法及装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101901222B (zh) * 2009-05-27 2012-07-18 北京启明星辰信息技术股份有限公司 一种sql解析及匹配的方法和系统
CN102375826B (zh) * 2010-08-13 2014-12-31 中国移动通信集团公司 Sql脚本解析方法、装置及系统
US10496640B2 (en) * 2012-12-19 2019-12-03 Salesforce.Com, Inc. Querying a not only structured query language (NoSQL) database using structured query language (SQL) commands
CN104252357A (zh) * 2013-11-05 2014-12-31 深圳市华傲数据技术有限公司 一种sql语言解析方法和装置
CN103778185A (zh) * 2013-12-27 2014-05-07 北京天融信软件有限公司 一种用于数据库审计系统的sql语句解析方法和系统
CN105279286A (zh) * 2015-11-27 2016-01-27 陕西艾特信息化工程咨询有限责任公司 一种交互式大数据分析查询处理方法
CN105787044A (zh) * 2016-02-26 2016-07-20 广州品唯软件有限公司 一种基于MySQL的SQL解析器及其解析方法

Also Published As

Publication number Publication date
CN108255837A (zh) 2018-07-06

Similar Documents

Publication Publication Date Title
CN108255837B (zh) 一种sql解析器及方法
US10983789B2 (en) Systems and methods for automating and monitoring software development operations
WO2020233330A1 (zh) 批量测试方法、装置及计算机可读存储介质
US9146712B2 (en) Extensible code auto-fix framework based on XML query languages
US9122540B2 (en) Transformation of computer programs and eliminating errors
CN110333863B (zh) 一种生成、显示小程序页面的方法及装置
CN110673854A (zh) Sas语言编译方法、装置、设备及可读存储介质
CN112363694B (zh) Fmu文件及求解器运行环境与工业软件的集成方法
KR102172255B1 (ko) 분산형 컴퓨팅 태스크를 실행하기 위한 방법 및 장치
CN111427784B (zh) 一种数据获取方法、装置、设备及存储介质
CN114036183A (zh) 一种数据etl处理方法、装置、设备及介质
CN111078217A (zh) 脑图生成方法、装置和计算机可读存储介质
CN114968817A (zh) 代码改动影响范围的评估方法、装置、设备及存储介质
US10691434B2 (en) System and method for converting a first programming language application to a second programming language application
CN115344932A (zh) 一种模型数据的规则审查方法、装置及电子设备
CN113806429A (zh) 基于大数据流处理框架的画布式日志分析方法
CN113962597A (zh) 一种数据分析方法、装置、电子设备及存储介质
CN114064601B (zh) 存储过程转换方法、装置、设备和存储介质
CN112650526B (zh) 版本一致性的检测方法、装置、电子设备和介质
CN108073401B (zh) 一种业务逻辑的执行方法、装置及电子设备
CN113204593A (zh) 一种基于大数据计算引擎的etl作业开发系统和计算机设备
CN108694172B (zh) 信息输出方法和装置
CN106843822B (zh) 一种执行代码生成方法及设备
US8819645B2 (en) Application analysis device
Yusuf et al. An automatic approach to measure and visualize coupling in object-oriented programs

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