jsqlparser和calcite和druid功能对比

需求分析:(用其它方法替代metabase中的某些功能)
功能1.经过对sql查询语句的分析,获得全部表名,以及全部表的字段名,字段类型,字段注解信息。
功能2.在sql语句执行查询前,校验sql语句是否正确,获得校验后的错误信息。html

带着这个需求,我去学习并测试了jsqlparser和calcite和以及druid的相关功能,并在这里记录本身测试的结果
(该结果只针对sql查询语句的解析)mysql

jsqlparser:
上手容易,操做简单,只能对sql语句进行拆分解析,和数据库无关。
calcite:
功能强大,操做相对jsqlparser复杂一点,对sql语句的解析功能相对jsqlparser来讲很强大,
能够和数据库创建查询,在jsqlparser解析结果的基础上还能够获得字段的类型和字段注解。
druid:
sql解析功能和jsqlparser相似,只能对sql语句进行拆分解析;若是用sql监控功能创建sql语句的结果分析,获得的结果和未创建数据库链接前同样。

相关api:
jsqlparser:
http://jsqlparser.sourceforge.net/docs/
calcite:
http://calcite.apache.org/apidocs/index.html
druid:
http://tool.oschina.net/apidocs/apidoc?api=druid0.26

相关学习文档和测试代码:
jsqlparser
连接:https://www.cnblogs.com/zhihuifan10/articles/11124953.html
calcite 
druid 
(后面会补上,待续...)sql


结论总结:
只有calcite能够获得需求中须要的结果,可是有些函数在calcite中不支持,例如mysql中的group_concat 函数,在执行sql解析时抛出函数不存在异常;
为了解决这个功能,我测试了calcite添加内置函数,可是这个功能有局限性,不太适用个人需求场景,如今未找到方法来替代metabase中解析sql功能。数据库

 

声明:此博客为我的学习之用,如与其余做品雷同,纯属巧合,转载请指明出处!apache

相关文章
相关标签/搜索