在前一篇文章中《浅析构建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

关注 【 麒思妙想】解锁更多硬核。

历史文章导读

  • 浅析构建SQL-to-SQL的翻译器

  • 抽象语法树为什么抽象

  • 基于Calcite自定义SQL解析器

  • 基于JDBC实现VPD:SQL解析篇

  • 如何成为一个成功的首席数据官

  • 数据库深度研究(100页PPT)

  • 基于Win10单机部署kubernetes应用

  • 浅谈基于JDBC实现虚拟专用数据库(VPD)

如果文章对您有那么一点点帮助,我将倍感荣幸

欢迎  关注、在看、点赞、转发 

再谈SQL-to-SQL翻译器相关推荐

  1. 再谈SQL注入入侵动网SQL版

    再谈SQL注入入侵动网SQL版  编辑前言: 这个文章我没有测试,但前提条件还是很多,比如一定要有别的程序存在,而且也要用同一个SQLSERVER库,还得假设有注入漏洞.说到底和动网没有什么关系,但因 ...

  2. 浅谈Linq to Sql 的不足

    前两星期,因为项目的需要,静下心来读完了<Pro.LINQ.Language.Integrated.Query.in.Csharp.2008>的 linq to object 和 linq ...

  3. boolean mybatis_浅谈mybatis中SQL语句给boolean类型赋值问题

    我就废话不多说了,大家还是直接看代码吧~ SELECT m.menu_id , m.parent_id , m.`name` , 1 opens FROM menu m WHERE m.is_vali ...

  4. 再谈JSON -json定义及数据类型

    再谈json 近期在项目中使用到了highcharts ,highstock做了一些统计分析.使用jQuery ajax那就不得不使用json, 可是在使用过程中也出现了非常多的疑惑,比方说,什么情况 ...

  5. 我的WCF之旅 (11): 再谈WCF的双向通讯-基于Http的双向通讯 V.S. 基于TCP的双向通讯...

    在一个基于面向服务的分布式环境中,借助一个标准的.平台无关的Communication Infrastructure,各个Service通过SOAP Message实现相互之间的交互.这个交互的过程实 ...

  6. “云计算”三部曲之二:与“云”共舞——再谈云计算

    引言:去年,我曾在一篇名为<未来计算在"云-端">的文章中指出,纯"云计算"并不是启动计算未来的"万能钥匙","云+端 ...

  7. tensorflow和python先学哪个-前辈说先学会了这些Python知识点,再谈学习人工智能!...

    原标题:前辈说先学会了这些Python知识点,再谈学习人工智能! 首先我们看一看Python的优势: 开源,跨平台. 社区.不要小看这一点.社区意味着有很多教程.书籍,出了问题很容易google到,乃 ...

  8. 再谈编程范式-程序语言背后的思想

    link link 编程范式 托马斯.库尔提出"科学的革命"的范式论后,Robert Floyd在1979年图灵奖的颁奖演说中使用了编程范式一词.编程范式一般包括三个方面,以OOP ...

  9. 再谈编程范式—程序语言背后的思想

    编程范式 托马斯.库尔提出"科学的革命"的范式论后,Robert Floyd在1979年图灵奖的颁奖演说中使用了编程范式一词.编程范式一般包括三个方面,以OOP为例: 1,学科的逻 ...

  10. Mssql,Access的sql经典SQL语句大全

    常用不常用的一些sql语句,对数据库操作不是很熟练的朋友可以查询.  下列语句部分是Mssql语句,不可以在access中使用. SQL分类: DDL-数据定义语言(CREATE,ALTER,DROP ...

最新文章

  1. 如何在文件夹中运行cmd命令行
  2. 【SQL 代码】Sql分页(自用)
  3. java是所有资源文件的索引_《Java程序设计》课程教学资源索引
  4. 牛客网暑期ACM多校训练营(第三场)H - Diff-prime Pairs
  5. PowerCenter基础心得
  6. boost跨平台 c++_跨平台C++整数类型 之一 固定宽度整数(boost和C++11)
  7. mysql 分类汇总_sql多级分类汇总实现介绍
  8. 我国自主播放软件暴风影音挑落微软
  9. java_eclipse_maven_svn_主题彩色插件_全屏插件
  10. 初学python之生成器
  11. linux测速(含脚本)
  12. Nat Methods | 德州大学西南医学中心王涛/王莉等开发空间转录组数据降噪的新方法...
  13. Spring Boot 错误页面解析原理(超级无敌详细)
  14. 《图像处理、分析与机器视觉》(第4版)阅读笔记——第五章 图像预处理
  15. 计算机公开课课前互动小游戏,幼儿园10个师幼互动小游戏 让你的课堂马上活跃嗨起来!...
  16. Python 数据分析 git 工具使用 flask学习
  17. daily reading
  18. 单片机加减法计算器_十进制加减法计算器单片机设计.doc
  19. android 创建多级目录,Android创建文件夹
  20. Linux执行命令常见的英语语句

热门文章

  1. 编写程序 , 求 e 的值
  2. 乡村老师网络计算机培训日志,乡村年轻女教师 “教育日记”火爆网络
  3. 联想新一体机旁边的 USB 口插上没反应
  4. c语言16进制怎么计算器,问各位大侠一个16进制计算器的问题(Charles Petzold著《windows程序设计》第11章)...
  5. Windows10 下同一局域网两台电脑互传文件及其取消
  6. 光纤布线兵法之热点问题篇(二)
  7. cuda10.1安装
  8. qs的arrayFormat与SpringBoot接收数组问题
  9. Nordic Thingy:52 Android App 源码及APK
  10. 用latex编写 的论文模版