Skip to main content
 首页 » 编程设计

SQL解析器

2022年07月19日142pengyingh

        最新项目需要做个通用查询,用户自己输入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解析,开始研究第三种,有时间自己实现。


本文参考链接:https://blog.csdn.net/neweastsun/article/details/50859308