zoukankan      html  css  js  c++  java
  • jsqlparser和calcite和druid功能对比

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

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

    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 
    (后面会补上,待续...)


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

    声明:此博客为个人学习之用,如与其他作品雷同,纯属巧合,转载请指明出处!

  • 相关阅读:
    多层级makefile
    vscode常用快捷键
    unix socket接口
    以太网复习
    shell脚本算术运算
    1185: 零起点学算法92——单词数(C)
    1183: 零起点学算法90——海选女主角(C语言)
    1181: 零起点学算法88——偶数求和(C语言)
    1144: 零起点学算法51——数组中删数(C语言)
    列主元消去法&全主元消去法——Java实现
  • 原文地址:https://www.cnblogs.com/zhihuifan10/p/11124724.html
Copyright © 2011-2022 走看看