我正在为MySQL查询寻找SQL查询解析器。使用我可以解析查询,修改查询对象并打印修改后的查询
JSQL Parser正是我所需要的,但它在列值中转义单引号时有两个主要问题 https://github.com/JSQLParser/JSqlParser/issues/167 https://github.com/JSQLParser/JSqlParser/issues/166
所以我正在寻找可以帮助我完成任务的开源替代方案
我试过的Presto-parser无法解析更新查询
如果其他人知道任何其他可靠的SQL解析库,请告诉我
答案 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。