[发明专利]一种SQL语句的自动翻译方法及装置有效
申请号: | 202010010999.3 | 申请日: | 2020-01-06 |
公开(公告)号: | CN111221846B | 公开(公告)日: | 2023-09-29 |
发明(设计)人: | 请求不公布姓名 | 申请(专利权)人: | 广州拉卡拉信息技术有限公司 |
主分类号: | G06F16/242 | 分类号: | G06F16/242 |
代理公司: | 北京墨丘知识产权代理事务所(普通合伙) 11878 | 代理人: | 魏梳芳 |
地址: | 510555 广东省广州市黄*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 sql 语句 自动 翻译 方法 装置 | ||
1.一种SQL语句的自动翻译方法,其特征在于,所述方法包括:
从接收到的输入信息中识别提取出SQL语句;
对输出的SQL语句进行语句分析,生成所述SQL语句的语法分析树;
根据所述语法分析树对所述SQL语句进行自动翻译,生成翻译后的SQL语句;
执行所述翻译后的SQL语句,返回执行状态,
所述SQL语句包括DDL语句和DML语句,所述DDL语句包括:CREATE TABLE语句、CREATEINDEX语句、DROP TABLE语句和DROP INDEX语句;所述DML语句包括:SELECT语句、INSERT语句、UPDATE语句、DELETE语句,
所述根据所述语法分析树对所述SQL语句进行自动翻译,生成翻译后的SQL语句,包括:
对于CREATE TABLE语句,根据所述语法分析树获取表名和租户ID,生成插入到saas_table的insert语句,根据所述语法分析树获取原create table语句中的所有字段名,生成插入到saas_field表中的insert语句;
对于CREATE INDEX语句,更改saas_table表中源索引表的索引字段的index Time为当前时间戳,根据索引字段的类型组合,判断其对应的索引表是否已创建,若未创建,则在saas_meta表中插入关于该索引表的相关信息,再通过CREATE TABLE语句创建该表,表名为saas_indexn,其中n为saas_meta表中插入记录的主键ID,将saas_data表中对应数据表ID的对应字段的数据转移到新创建的saas_indexn表中;
对于DROP TABLE语句,根据所述语法分析树获得到要删除表的表名,生成在saas_table中删除该表名的SQL语句,生成在saas_data中删除该表相关的记录的SQL语句,如果该表有建立索引,则生成在对应索引表中含有该表数据的记录的SQL语句;
对于DROP INDEX语句,根据所述语法分析树获得索引名,根据索引名找到对应的索引字段类型的组合,以找到该索引存储的saas_indexn表以及该索引的tableId,生成删除该saas_indexn中索引对应表的所有数据的SQL语句;
对于SELECT语句,当where子句不包含索引字段时:根据所述语法分析树获得所有查询字段及条件,将from子句的表名替换为saas_data,将select子句的子弹翻译为saas_data表中相应的字段名
当where子句不包含索引字段时:根据索引字段的类型组合,从saas_meta表中确定saas_indexn中的n,将带有索引字段的where子句翻译为对应saas_indexn表的where子句并保留满足对应条件的recordID作为结果集,在saas_data表中过滤掉不在recordID中的记录,并将select子句的字段翻译为saas_data表中对应的字段;
对于INSERT语句,根据所述语法分析树将所有插入字段翻译为saas_data表中对应的字段,并加入saas_data表的元数据字段,将插入的表对象替换为saas_data表,判断插入的字段是否包含索引字段,如果含有索引字段,则继续生成一个插入该索引字段对应的saas_indexn表的插入语句;
对于UPDATE语句,语句中SET前部分的翻译与所述INSERT语句的翻译一致,where字句的翻译与所述SELECT语句的翻译一致,拼接上述翻译之后的语句为update的翻译语句;
对于DELETE语句,为所述INSERT语句翻译的逆操作。
2.根据权利要求1所述的方法,其特征在于,所述从接收到的输入信息中识别提取出SQL语句包括:接收输入,并对所述输入进行预处理,输出经预处理后的SQL语句。
3.根据权利要求2所述的方法,其特征在于,所述预处理包括:
判断所述输入中的SQL语句是否符合预定义的语法规则;
若符合所述语法规则,判断所述输入中的SQL语句所属类型,并调用相应的翻译类型。
4.根据权利要求1所述的方法,其特征在于,对所述SQL语句进行语句分析包括:对所述SQL语句进行词法分析和语法分析。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广州拉卡拉信息技术有限公司,未经广州拉卡拉信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010010999.3/1.html,转载请声明来源钻瓜专利网。
- 上一篇:终端的定位修正方法、装置
- 下一篇:适用于设备侧的虚拟化系统