SQL解析器

        最新项目需要做个通用查询,用户自己输入select查询,然后返回分页结果给客户,并可以下载对应excel;那么如何实现分页展示,否则用户随便写个语句,数据量太大,会造成数据量太大导致内存溢出;所以需要把用户的sql语句进行解析,在执行sql之前,先执行对应的select count(*)代码,计算结果又多少行,才能方便分页。那如何解析sql语句。

经过一番搜搜,大概有三种方式:

1、通过正则表达式,寻找from位置,替换select 和from之间的语句,并且考虑子查询的情况。

2、利用开源的sql编译器,如 ZQL http://zql.sourceforge.net/ ) , JSQLPARSER  http://jsqlparser.sourceforge.net/  ;但复杂SQL解析不行,且很长时间没有更新,不建议使用;最好的sqlparse http://www.sqlparser.com/  但是该软件是收费的;

3、使用ANTLR(http://www.antlr.org)创建自己的sql编译器,正好自己学习下编译器的开发学习,也可以参考hibernate的sql解析器。

由于项目时间紧,先采用了第一种方式实现,第二种方式测试了下, 开源的功能太弱,不支持复杂的SQL解析,开始研究第三种,有时间自己实现。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值