calcite查询mysql_使用Calcite做Sql语法解析

本文介绍了如何利用Calcite进行SQL语法解析,通过设置配置为MySQL语法,解析示例SQL并展示了如何获取抽象语法树的各个部分,包括SqlSelect、SqlIdentifier、SqlLiteral等节点。通过对SqlNode的遍历,可以实现血缘分析和Flink SQL的维表关联等功能。
摘要由CSDN通过智能技术生成

Flink SQL中使用Calcite作为sql语法解析、校验、优化工具,本篇是实操篇,介绍一下calcite做sql语法解析使用方式。

sql经过calcite解析之后,得到一棵抽象语法树,也就是我们说的AST,这棵语法树是由不同的节点组成,节点称之为SqlNode,根据不同类型的dml、ddl得到不同的类型的SqlNode,例如select语句转换为SqlSelect,delete语句转换为SqlDelete,join语句转换为SqlJoin。

使用方式:

SqlParser.Config config = SqlParser.configBuilder()

.setLex(Lex.MYSQL) //使用mysql 语法

.build();

//SqlParser 语法解析器

SqlParser sqlParser = SqlParser

.create("select id,name,age FROM stu where age<20", config);

SqlNode sqlNode = null;

try {

sqlNode = sqlParser.parseStmt();

} catch (SqlParseException e) {

throw new RuntimeException("", e);

}

这里解析了一个select的语句,那么得到的sqlNode就是一个SqlSelect。

if(SqlKind.SELECT.equals(sqlNode.getKind())){

SqlSelect

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值