有没有好用的开源sql语法分析器
好用的开源sql语法分析器主要有:1.Apache Calcite;2.SQLReader;3.Spark SQL;4.Antlr;5.SQLite。Apache Calcite是一款优异的开源SQL解析工具,可提供SQL相关的全部必要功能,包括SQL解析、SQL语法校验、查询优化、SQL生成器、数据连接等。
1.Apache Calcite
Apaceh Calcite一般被简称为Calcite,其本身是一个动态数据管理框架,具备很多典型数据库管理系统的功能,包括SQL解析、SQL校验、SQL查询优化、SQL生成以及数据连接查询等。
Calcite可以将各种SQL语句解析成为抽象语法树(AST,Abstract Syntax Tree)。之后,通过操作AST就可以把SQL语句所要表达的算法与关系体现在具体代码之中。目前,很多主流的大数据组件的SQL处理引擎都使用Calcite,包括Hive、Drill、Flink、Phoenix、Storm等。
2.SQL Reader
SQL Reader是一款强大的国产SQL语法分析器,具有六大特点:名列前茅,独立性强,不依赖任何第三方工具;第二,语法分析极其高效,一秒以内可以分析多个SQL脚本;第三,结果详细,兼顾到字段级血缘和条件级血缘;第五,兼容性强,支持各种常见数据库的语法;第五,支持智能识别,可以自动识别出各种脚本(如:perl、shell、存储过程)中的SQL语句;第六,简单易用,无需过多配置,一步分析,结果自动结构化保存到数据库表中。
3.Spark SQL
Spark SQL是spark的一个模块,主要用于进行结构化数据的处理。它主要有两个分支,sqlContext和hiveContext。sqlContext现在只支持SQL语法解析器;hiveContext现在支持SQL语法解析器和hivesql语法解析器,默认为hiveSQL语法解析器,用户可以通过配置切换成SQL语法解析器,来运行hiveSQL不支持的语法。
4.Antlr
Antlr(Another Tool for Language Recognition)是一个强大的开源语法分析工具,支持词法和语法分析,并能生成多种编程语言的分析器代码。Antlr生成的语法分析器会构建一个称为语法分析树或语法树的数据结构,它记录语法分析器如何识别输入句子的结构和它的组件短语。
5.SQLite
SQLite语法分析器是由一个叫lemon的应用程序自动生成的,该语法分析器是由美国计算机专家Richard Hipp先生开发。相对于知名的YACC和BISON,Lemon语法分析器生成器有些名不见经传。但Lemon有自己特有的优势:块头更小,整个源代码只有四千多行,短小精悍;Lemon的可执行文件也很小,只有120多K,配合Lemon使用的lempar.c模板文件也只有700余行,非常精炼。
延伸阅读
sql语法中的常用语句有哪些
sql 语句就是对数据库进行操作的一种语言,熟练掌握SQL语句可以让我们对数据库的数据处理变得非常简单。在sql语法中,常用语句主要分为五类:数据库查询语句、数据定义语句、数据操作语句、数据控制语句和事务控制语句。
1.数据库查询语句
数据库查询语句,英文全称Data Query Language,简称DQL。其基本结构是由SELECT子句,FROM子句,WHERE 子句组成的查询块,代表关键字为select。
2.数据定义语句
数据定义语句,英文全称Data Denifition Language,简称DDL。主要用来创建数据库中的各种对象,创建、删除、修改表的结构,比如表、视图、索引、同义词、聚簇等,代表关键字为create、drop、alter。和DML相比,DML是修改数据库表中的数据,而 DDL 是修改数据中表的结构。
3.数据操作语句
数据操作语句可以实现对数据库的基本操作,英文全称是Data Manipulation Language,简称DML。代表关键字为insert、delete 、update。
4.数据控制语句
数据控制语句,英文全称Data Control Language,简称DCL。它是用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。代表关键字为grant、revoke。
5.事务控制语句
事务控制语句,英文全称Trasactional Control Languag,简称TCL。经常被用于快速原型开发、脚本编程、GUI和测试等方面,代表关键字为commit、rollback。

