[发明专利]基于Flex和Bison的SQL语法树解析方法在审
申请号: | 202110312632.1 | 申请日: | 2021-03-24 |
公开(公告)号: | CN113032366A | 公开(公告)日: | 2021-06-25 |
发明(设计)人: | 王斌;赵智博;曲彦秋;杨晓春 | 申请(专利权)人: | 东北大学 |
主分类号: | G06F16/21 | 分类号: | G06F16/21;G06F16/22;G06F16/242;G06F40/211;G06F40/253 |
代理公司: | 沈阳东大知识产权代理有限公司 21109 | 代理人: | 李在川 |
地址: | 110819 辽宁*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 flex bison sql 语法 解析 方法 | ||
1.一种基于Flex和Bison的SQL语法树解析方法,其特征在于,包括:
步骤1:获取数据库历史查询文件,收集指定数据库实例对应的SQL语句,所述SQL语句包括insert语句、delete语句、update语句以及select语句;
步骤2:对每条SQL语句进行词法分析,根据构词规则将SQL语句分割为相应的记号;
步骤3:将词法分析处理得到的记号序列进行语法分析,根据SQL语法规则将记号序列转化为语法树形式;
步骤4:将语法树结构转化为JSON格式;
步骤5:重复执行步骤2至步骤4,直到处理完所有的SQL语句。
2.根据权利要求1所述的一种基于Flex和Bison的SQL语法树解析方法,其特征在于,所述步骤1包括:
步骤1.1:开启关系型数据库中的历史查询日志功能,收集query workload信息;
步骤1.2:读取数据库历史查询日志文件,通过ID跟踪用户执行的操作,筛选出指定数据库实例的查询日志;
步骤1.3:排除掉日志中的时间信息、ID信息以及命令类型信息,得到指定数据库实例的日志中包含的SQL语句,所述SQL语句包括insert语句、delete语句、update语句以及select语句。
3.根据权利要求1所述的一种基于Flex和Bison的SQL语法树解析方法,其特征在于,所述步骤2包括:
步骤2.1:根据SQL语句中的关键字、数据库命名规则以及变量类型,制定正则表达式进行每个词的匹配并转换为相应的记号;
步骤2.2:利用Flex软件将正则表达式以及相应记号的转换动作转化为C语言形式;
步骤2.3:调用C语言代码文件中的yylex()函数读取SQL语句进行构词规则匹配,判断每条SQL语句是否存在词法问题;
步骤2.4:对于不存在词法问题的SQL语句分割为相应的记号,得到每条SQL语句对应的记号序列,对于存在词法问题的SQL语句则直接删除。
4.根据权利要求1所述的一种基于Flex和Bison的SQL语法树解析方法,其特征在于,所述步骤3包括:
步骤3.1:设计SQL语法树节点的结构体类型,其中包含节点的类型、节点存储的数值、该节点的兄弟节点以及子节点;
步骤3.2:根据SQL语法设计BNF文法;
步骤3.3:利用Bison软件将编写好的BNF文法转化为C语言形式,读取步骤2生成的记号序列进行BNF文法匹配,得到最终的SQL语法树。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东北大学,未经东北大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110312632.1/1.html,转载请声明来源钻瓜专利网。