tonglin0325的个人主页

使用Presto parser解析SQL

Presto的语法解析器是使用ANTLR生成的

PrestoDB的parser g4语法文件

1
2
https://github.com/prestodb/presto/blob/master/presto-parser/src/main/antlr4/com/facebook/presto/sql/parser/SqlBase.g4

PrestoSQL(Trino)的parser g4语法文件

1
2
https://github.com/trinodb/trino/blob/master/core/trino-grammar/src/main/antlr4/io/trino/grammar/sql/SqlBase.g4

如果想在java代码中使用Presto的parser进行语法解析的话,可以引用下面的依赖

PrestoDB(Facebook版本)

1
2
3
4
5
6
<dependency>
<groupId>com.facebook.presto</groupId>
<artifactId>presto-parser</artifactId>
<version>0.285.1</version>
</dependency>

PrestoSQL(社区版本,350及其以下版本叫prestosql,以上改名为Trino)

1
2
3
4
5
6
<dependency>
<groupId>io.prestosql</groupId>
<artifactId>presto-parser</artifactId>
<version>330</version>
</dependency>

Trino(社区版本,版本从351开始)

1
2
3
4
5
6
<dependency>
<groupId>io.trino</groupId>
<artifactId>trino-parser</artifactId>
<version>351</version>
</dependency>

presto parser的使用

可以参考:《Hive、Spark、Presto SQL 输入输出表解析》