前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >再谈SQL-to-SQL翻译器

再谈SQL-to-SQL翻译器

作者头像
麒思妙想
发布2021-01-08 15:10:23
1.5K0
发布2021-01-08 15:10:23
举报
文章被收录于专栏:麒思妙想麒思妙想

在前一篇文章中《浅析构建SQL-to-SQL的翻译器》,我简单的阐述整体的思想。很高兴借此认识了一些新的小伙伴,并且进行了深入的探讨。

今天我们再来做一些进一步的思考,然后再加入一点想象力,看看是否可以将深度学习引入到这个过程中来呢?接下来,我们就来说说吧。

常规

显而易见的,我们有几条路可以选,

  1. 解析阶段转换 即在源SQL输入进行语法解析的时候,同时构建目标SQL的AST。
  2. 遍历阶段转换 即在遍历源AST的时候,构建目标SQL的AST。
  3. 直接转换

即直接将源AST硬转成目标AST。

在这里,我描述的尽量简化,但是实际上,我们都很难一次性完成转换工作,需要结合上下文进行相关的语义转换。而且我们可能在转换过程中,需要构建一套“中立”的AST,用于抽象和存储各种SQL方言特性。然后再进一步转化。

我们以durid的parser为例,对ast api进行一些扩展,以存储上下文,以及记录转换变更,以便溯源。

NLP

上面,我们介绍了一些常规手段,接下来就是我最近的一点思考,也是偶然读到了几篇关于NL2SQL的文章受其启发,所想到的。

NL2SQL(Natural Language to SQL), 顾名思义,是将自然语言转为SQL语句。它可以充当数据库的智能接口,让不熟悉数据库的用户能够快速地找到自己想要的数据。

既然NLP能做到自然语言翻译成SQL,为什么不能在 SQL-to-SQL 的翻译上做一些工作呢?

这方面,我们需要做的探索,目前我理解如下:

  • SQL的分词和词性划分,与自然语句分词不同
  • SQL的语法与自然语言不同。
  • SQL-to-SQL 部分为强规则,部分需要理解执行语义

好了,今天就先写到这,欢迎有兴趣的同学和我交流。如果本文对你有一点点帮助,那么非常期望你能关注我,并转发。

参考链接

https://spaces.ac.cn/archives/6771

http://www.itongji.cn/detail?type=99991958

https://www.zhihu.com/question/24588198?sort=created

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 麒思妙想 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档