[发明专利]一种多模态数据库解析引擎的实现方法及装置有效
申请号: | 201911380397.0 | 申请日: | 2019-12-27 |
公开(公告)号: | CN111143330B | 公开(公告)日: | 2023-10-03 |
发明(设计)人: | 姜明俊 | 申请(专利权)人: | 湖南亚信软件有限公司 |
主分类号: | G06F16/21 | 分类号: | G06F16/21;G06F16/242;G06F16/33 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 潘颖 |
地址: | 410205 湖南省长沙市高新开*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 多模态 数据库 解析 引擎 实现 方法 装置 | ||
本发明公开了一种多模态数据库解析引擎的实现方法,包括:针对SQL语句采用Oracle语法建立第一语法文件和第二语法文件,其中,所述第一语法文件中包含关键字和token;在对所述SQL语句进行语法解析过程中,对所述第一语法文件的关键字和token进行转换,得到目标SQL语句;依据所述第二语法文件将所述目标SQL语句进行语法解析,得到结构体;对所述结构体进行语义分析得到查询树,依据所述查询树确定目标实现方式;依据所述目标实现方式执行所述SQL语句。上述的实现方法中,通过建立第一语法文件和第二语法文件实现对语法的兼容和动态加载机制,实现了对SQL解析引擎的扩展,实现了各种数据库的兼容和适配。
技术领域
本发明涉及互联网技术领域,尤其涉及一种多模态数据库解析引擎的实现方法及装置。
背景技术
orafce是PostgreSQL的一个extension,主要是为PostgreSQL提供Oracle的部分语法、函数、字典表等兼容,比如只支持date,varchar2 and nvarchar2等几种数据类型,支持的数据类型和函数都很有限。
orafce的实现都是基于函数、视图来实现的。所以如果要做完整的语法兼容,orafce的做法是无法实现的。因为postgres的语法分析在调用视图和函数之前。必须要在语法分析之前切入hook才能使用extension的实现做语法兼容性。所以orafce并不是一个彻底的兼容解决方案,极大的限制了应用从Oracle迁移到PostgreSQL。
发明内容
有鉴于此,本发明提供了一种多模态数据库解析引擎的实现方法及装置,用以解决orafce并不是一个彻底的兼容解决方案,极大的限制了应用从Oracle迁移到PostgreSQL的问题。具体方案如下:
一种多模态数据库解析引擎的实现方法,包括:
针对SQL语句采用Oracle语法建立第一语法文件和第二语法文件,其中,所述第一语法文件中包含关键字和token;
在对所述SQL语句进行语法解析过程中,对所述第一语法文件的关键字和token进行转换,得到目标SQL语句;
依据所述第二语法文件将所述目标SQL语句进行语法解析,得到结构体;
对所述结构体进行语义分析得到查询树,依据所述查询树确定目标实现方式;
依据所述目标实现方式执行所述SQL语句。
上述的方法,可选的,还包括:
在接收到对Oracle语法的切换指令时,通过set命令、指定grammar参数或者hint指定的方式切换解析引擎到对应生效级别,其中,所述生效级别包括:服务参数配置级别,Session会话级别和SQL语句级别。
上述的方法,可选的,在对所述SQL语句进行语法解析过程中,对所述第一语法文件的关键字和token进行转换,得到目标SQL语句,包括:
获取所述第一语法文件中的所述关键字和所述token;
对所述关键字和所述token进行区分;
对所述关键字和所述token进行转换得到目标SQL语句。
上述的方法,可选的,依据所述第二语法文件将所述目标SQL语句进行语法解析,得到结构体,包括:
采用BISON获取所述第二语法文件中已经定义的语法结构;
对所述语法结构进行移进和规约操作,得到结构体。
上述的方法,可选的,依据所述查询树确定目标实现方式,包括:
获取所述查询树中查询结果的多种实现方式的排列组合;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于湖南亚信软件有限公司,未经湖南亚信软件有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911380397.0/2.html,转载请声明来源钻瓜专利网。