用于Java的SQL查询解析器

时间:2015-09-02 23:34:30

标签: java mysql sql-parser jsqlparser

我正在为MySQL查询寻找SQL查询解析器。使用我可以解析查询,修改查询对象并打印修改后的查询

JSQL Parser正是我所需要的,但它在列值中转义单引号时有两个主要问题 https://github.com/JSQLParser/JSqlParser/issues/167 https://github.com/JSQLParser/JSqlParser/issues/166

所以我正在寻找可以帮助我完成任务的开源替代方案

我试过的Presto-parser无法解析更新查询

如果其他人知道任何其他可靠的SQL解析库,请告诉我

2 个答案:

答案 0 :(得分:1)

关于 JSqlParser

问题166 已修复。

不支持单引号的转义,但使用双引号是。因此,在解析之前,有人可以使用''替换所有 \'

编辑 问题167 已在JSqlParser的实际Snapshot 0.9.5中修复。

答案 1 :(得分:0)

一年前,我搜索同样的东西,但最后我使用另一种方法。那些是我发现解析sql的项目。

  • ANTLR。常用的是通用解析器。它是一种解析器生成器。从一组规则中,它编写了java代码。有很多像西班牙语,java或sql这样的规则。

  • JParsec。似乎与前一个类似。似乎已经存在SQL规则,但似乎并不容易使用。

  • ZQL。使用JavaCC自动生成解析SQL的Java代码。我测试这个,但我不能让它按我想要的方式工作。我认为该项目已经停止。

  • sql-parser。它看起来不错,但是当我测试它时,我无法使它工作。该链接似乎不起作用,但我认为原始项目的this is a fork