再谈SQL-to-SQL翻译器
在前一篇文章中《浅析构建SQL-to-SQL的翻译器》,我简单的阐述整体的思想。很高兴借此认识了一些新的小伙伴,并且进行了深入的探讨。
今天我们再来做一些进一步的思考,然后再加入一点想象力,看看是否可以将深度学习引入到这个过程中来呢?接下来,我们就来说说吧。
常规
显而易见的,我们有几条路可以选,
解析阶段转换
即在源SQL输入进行语法解析的时候,同时构建目标SQL的AST。
遍历阶段转换
即在遍历源AST的时候,构建目标SQL的AST。
直接转换
即直接将源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翻译器相关推荐
- 再谈SQL注入入侵动网SQL版
再谈SQL注入入侵动网SQL版 编辑前言: 这个文章我没有测试,但前提条件还是很多,比如一定要有别的程序存在,而且也要用同一个SQLSERVER库,还得假设有注入漏洞.说到底和动网没有什么关系,但因 ...
- 浅谈Linq to Sql 的不足
前两星期,因为项目的需要,静下心来读完了<Pro.LINQ.Language.Integrated.Query.in.Csharp.2008>的 linq to object 和 linq ...
- boolean mybatis_浅谈mybatis中SQL语句给boolean类型赋值问题
我就废话不多说了,大家还是直接看代码吧~ SELECT m.menu_id , m.parent_id , m.`name` , 1 opens FROM menu m WHERE m.is_vali ...
- 再谈JSON -json定义及数据类型
再谈json 近期在项目中使用到了highcharts ,highstock做了一些统计分析.使用jQuery ajax那就不得不使用json, 可是在使用过程中也出现了非常多的疑惑,比方说,什么情况 ...
- 我的WCF之旅 (11): 再谈WCF的双向通讯-基于Http的双向通讯 V.S. 基于TCP的双向通讯...
在一个基于面向服务的分布式环境中,借助一个标准的.平台无关的Communication Infrastructure,各个Service通过SOAP Message实现相互之间的交互.这个交互的过程实 ...
- “云计算”三部曲之二:与“云”共舞——再谈云计算
引言:去年,我曾在一篇名为<未来计算在"云-端">的文章中指出,纯"云计算"并不是启动计算未来的"万能钥匙","云+端 ...
- tensorflow和python先学哪个-前辈说先学会了这些Python知识点,再谈学习人工智能!...
原标题:前辈说先学会了这些Python知识点,再谈学习人工智能! 首先我们看一看Python的优势: 开源,跨平台. 社区.不要小看这一点.社区意味着有很多教程.书籍,出了问题很容易google到,乃 ...
- 再谈编程范式-程序语言背后的思想
link link 编程范式 托马斯.库尔提出"科学的革命"的范式论后,Robert Floyd在1979年图灵奖的颁奖演说中使用了编程范式一词.编程范式一般包括三个方面,以OOP ...
- 再谈编程范式—程序语言背后的思想
编程范式 托马斯.库尔提出"科学的革命"的范式论后,Robert Floyd在1979年图灵奖的颁奖演说中使用了编程范式一词.编程范式一般包括三个方面,以OOP为例: 1,学科的逻 ...
- Mssql,Access的sql经典SQL语句大全
常用不常用的一些sql语句,对数据库操作不是很熟练的朋友可以查询. 下列语句部分是Mssql语句,不可以在access中使用. SQL分类: DDL-数据定义语言(CREATE,ALTER,DROP ...
最新文章
- 如何在文件夹中运行cmd命令行
- 【SQL 代码】Sql分页(自用)
- java是所有资源文件的索引_《Java程序设计》课程教学资源索引
- 牛客网暑期ACM多校训练营(第三场)H - Diff-prime Pairs
- PowerCenter基础心得
- boost跨平台 c++_跨平台C++整数类型 之一 固定宽度整数(boost和C++11)
- mysql 分类汇总_sql多级分类汇总实现介绍
- 我国自主播放软件暴风影音挑落微软
- java_eclipse_maven_svn_主题彩色插件_全屏插件
- 初学python之生成器
- linux测速(含脚本)
- Nat Methods | 德州大学西南医学中心王涛/王莉等开发空间转录组数据降噪的新方法...
- Spring Boot 错误页面解析原理(超级无敌详细)
- 《图像处理、分析与机器视觉》(第4版)阅读笔记——第五章 图像预处理
- 计算机公开课课前互动小游戏,幼儿园10个师幼互动小游戏 让你的课堂马上活跃嗨起来!...
- Python 数据分析 git 工具使用 flask学习
- daily reading
- 单片机加减法计算器_十进制加减法计算器单片机设计.doc
- android 创建多级目录,Android创建文件夹
- Linux执行命令常见的英语语句
热门文章
- 编写程序 , 求 e 的值
- 乡村老师网络计算机培训日志,乡村年轻女教师 “教育日记”火爆网络
- 联想新一体机旁边的 USB 口插上没反应
- c语言16进制怎么计算器,问各位大侠一个16进制计算器的问题(Charles Petzold著《windows程序设计》第11章)...
- Windows10 下同一局域网两台电脑互传文件及其取消
- 光纤布线兵法之热点问题篇(二)
- cuda10.1安装
- qs的arrayFormat与SpringBoot接收数组问题
- Nordic Thingy:52 Android App 源码及APK
- 用latex编写 的论文模版