[发明专利]一种SQL格式化的方法在审
申请号: | 201811484271.3 | 申请日: | 2018-12-06 |
公开(公告)号: | CN109597624A | 公开(公告)日: | 2019-04-09 |
发明(设计)人: | 魏明伟 | 申请(专利权)人: | 魏明伟 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F16/242 |
代理公司: | 北京天盾知识产权代理有限公司 11421 | 代理人: | 张彩珍 |
地址: | 300170 天*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 格式化 语法分析过程 编码效率 词法分析 通用性强 重新定义 注释位置 语法树 自定义 遍历 虚拟 场景 输出 开发 | ||
本发明涉及一种SQL格式化的方法,该方法包括:A、词法分析提取注释;B、自定义语法分析过程;C、重新定义ANTLR的createToken方法;D、遍历虚拟语法树,确定注释位置;E、格式化输出。本发明通用性强,适用于SQL体系的任意一种具体场景,比如hive sql,mysql等,极大提高了SQL开发人员的编码效率和质量。
技术领域
本发明涉及计算机程序设计工具的技术领域,具体涉及一种SQL格式化的方法。
背景技术
SQL语言的开发人员在编写SQL程序的时候,通常会按照特定的编程规范来编写。但是手工编写过程中容易产生不规范的问题,或者一些初级编码人员或业余编码人员编写的SQL语言会存在很多不符合规范的情况。为了使代码更容易读懂,不同层次的人员都能够产出完全符合规范的SQL程序。SQL自动格式化的系统性工具成为了开发过程中的必要工具。该工具提供了一种自动化的方法将SQL语言进行格式化,将规范自动应用于SQL语句,节约了开发人员手工格式化SQL的时间,提升开发的效率和质量。
现有的相关工具:1、ApexSQL Refactor SQL formatter;2、SQL Pretty Printer;3、Druid。第一个工具和第二个工具都是运行在Windows平台,对平台兼容性差,第一个工具和第二个工具都属于商业软件,内部构造对外不公开。第三个工具提供SQL格式化的方法,是自己实现了SQL语言的语法解析,遍历虚拟语法树输出SQL格式化文本。但是注释会被忽略,而且个性化的格式化规范支持不好,另外有些方言的语法支持不完善。这三种工具对很多种SQL方言支持不好。
以Druid为例,它的SQL格式化实现步骤是:
1、进行词法和语法的分析生成虚拟语法树。
2、从根节点开始向下遍历虚拟语法树的每个节点。
3、每个节点根据自己的类型按照语法规范格式化输出子节点和自身的信息。
当访问过每个节点后,程序会生成相应的格式化后的SQL。
这种格式化方式为了处理方便会忽略掉注释,然而保留注释的格式化才能算是完整的格式化。
自己实现SQL语言解析的方式,系统难以维护。已目前的Druid为例。当前对一些SQL方言的语法支持不是太友好,如果在代码成面实现一些语法难度非常大。
发明内容
为解决现有技术中存在的上述问题,本发明提供一种SQL格式化的方法,该方法构建在ANTLR工具之上,依赖ANTLR的词法和语法解析器的自动生成技术,使得整体技术方案通用性(可以方便的支持其他SQL方言)和可维护性(修改ANTLR的语法词法定义,避免语法和词法分析器的复杂代码维护)更强。技术着重在SQL脚本本身的格式化和原始脚本注释位置的精准还原上。
本发明通过下述技术方案实现:一种SQL格式化的方法,该方法包括:
A、词法分析提取注释;
B、自定义语法分析过程;
C、重新定义ANTLR的createToken方法;
D、遍历虚拟语法树,确定注释位置;
E、格式化输出。
进一步的,所述步骤A中还包括编写ANTLR词法和语法脚本。
进一步的,所述步骤A中还包括设定行注释的词法分析通道为一个特殊通道,区别于空格和换行,为后续直接在词法分析结果中直接过滤出所有的注释。
进一步的,所述步骤A中还包括完成词法分析后,将所有的注释Token保存到一个单独队列;当前Token信息包含:所在原始字符串的行号和行内的偏移量。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于魏明伟,未经魏明伟许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811484271.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种插件管理方法、装置、设备及存储介质
- 下一篇:可扩展部署系统