背景:项目中,需要在执行hive之前,先对hive的sql进行解析,获取到sql中对应的表名和列名。
1.阿里的druid中的sql parser有各种关系数据库sql的解析,但hive的不支持。
2.General sql parser中有hive sql的对应解析,但是商业版且自己不可控,不打算用。
3.想从hive的ParseDriver中获取语法树,解析得到table和column,但没有成功,因为没发现有可用的visitor进行遍历语法树进行获取。
4.antlr自己拿到hive的词法文件和语法文件,进行解析,觉得难度和工作量有些大,并且觉得hive的jar中已经做过这些事了,是不是可以不用做。
有人能提供帮助吗?
通过hive的方法获取到AST, 自己编写一个AST的parser,获取到表,列,别名及操作的各种信息。
AST的parser代码参照博客。
代码呢