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功能。
声明:此博客为个人学习之用,如与其他作品雷同,纯属巧合,转载请指明出处!
jsqlparser和calcite和druid功能对比的更多相关文章
- SQL SERVER 数据库各版本功能对比
以前写了篇SQL SERVER 2008数据库各版本功能对比,官网提供的那个功能确实很好很强大,后面发现那个链接失效了.今天又遇到要对比SQL Server 2014数据库版本功能需求,搜索找了好久才 ...
- 企业IT管理员IE11升级指南【7】—— Win7和Win8.1上的IE11功能对比
企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...
- Office 365 plans, SharePoint Online, and SharePoint 2013 on-premises 功能对比列表
Andrew ConnellSharePoint大牛整理了一个各个版本SharePoint功能对比列表,是SharePoint相关人员必备资料.赶紧收藏起来. SharePoint 2013 Feat ...
- SQL Server 2012 数据库各个版本功能对比
作为这篇SQL SERVER 2008数据库各版本功能对比 的姊妹篇,就写点SQL Server 2012 各个版本的区别以及物理以及逻辑上的限制. 个部分来分http://technet.micro ...
- CDN云主机与传统虚拟主机功能对比
CDN云主机与传统虚拟主机功能对比 传统的虚拟主机都是单台服务器,一旦机器硬件损坏.IP被封.机房网络故障等,都将导致网站不能访问,严重的情况数据还无法及时取回,即使想换一家服务商也因为没有数据而无能 ...
- SQL SERVER 的前世今生--各版本功能对比
背景 今天举办的 Data Amp 大会上,微软向开发者们强调了 数据如何影响他们的应用和服务 ,顺道还宣布了几个小新闻.这个免费的线上研讨会不仅展示了未来的机器学习远景,还发布了 SQL Serve ...
- 企业IT管理员IE11升级指南【9】—— IE10与IE11的功能对比
企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...
- PDF Transformer+与Transformer3.0功能对比
ABBYY PDF Transformer+是一个新的.全面的巧妙解决PDF文档的工具,它将泰比的光学字符识别(OCR)技术和Adobe®PDF技术完美结合,以确保实现便捷地处理任何类型的PDF文件, ...
- 中国区 Azure 和全球版 Azure:功能对比
由世纪互联运营的 Microsoft Azure(文中简称为中国区 Azure)是在中国大陆独立运营的公有云平台,与全球其他地区由微软运营的 Azure (文中简称全球版 Azure)服务在物理上和逻 ...
随机推荐
- dva与create-react-app的结合使用
dva与我们的create-react-app创建的两款脚手架是我们写react项目的两款优秀框架,之前一种使用create-react-app这款脚手架进行开发.然后这个框架美中不足的是redux方 ...
- 【NS2】WiMAX_NS2说明文档(转载)
关于目前NS2中WiMAX模块的说明 (1)美国NIST(National Institute of Standards and Technology)版, 可以从NIST主页获得,2007.04 r ...
- Android横竖屏切换和灭屏亮屏时Activity的生命周期探究(1)
研究这个问题的初衷在于项目中碰到了一个问题:横屏的时候灭屏再亮屏,亮屏的时候用户能够清晰的看到先启动竖屏(过程1)再切换到横屏的过程,因为灭屏的时候onSaveInstanceState()保存的时横 ...
- W600 一块新的 KiCad PCB
W600 一块新的 KiCad PCB 打算做以下功能. Type-C USB. 使用 KiCad 画板. 加入串口芯片,方便调试. 使用 PCB 天线.
- python 字典元素删减
- @codechef - SONATR@ Sonya and Tree
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定 p 为 0~N-1 的一个排列,并给定一棵 N 个点的树. ...
- Android的headerView和emptyView共存问题
今天做项目的时候,准备优化下ListView相关的东西,于是乎,需要做一个当列表无数据时,空的提醒页面.这个自然想到的是ListView的setEmptyView()方法,于是顺手就写了,可是,当我为 ...
- vue实现购物车逻辑
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- UVa11400 - Lighting System Design——[动态规划]
题干略. 题意分析: 很容易理解一类灯泡要么全部换要么全不换,其实费用节省的主要原因是由于替换灯泡类型而排除了低压电压源,于是我们就可以推断出灯泡类型替换的原则: 对于两类灯泡a1和a2,a1可以被a ...
- Python--day64--author表多对多关联book表
数据库数据结构设计: