是否有用于解析SQL语句的开源Java库?
如果可能,它应该是可定制的或足够灵活的,以便能够解析(或至少忽略)特定于供应商的语法(例如Oracle表空间定义或MySQL的LIMIT子句)。
如果没有,严格遵守SQL标准也没关系。
更新:我需要两件事:
答案 0 :(得分:49)
ANTLR3具有ANSI SQL语法。您可以使用它来创建自己的解析器。
ANTLR4有SQL grammar。
答案 1 :(得分:32)
答案 2 :(得分:10)
分析器
如果您需要解析器,则Apache Derby的代码库中应该有一个解析器。
处理特定于供应商的SQL
您可能希望查看jdbc Connection对象上的.native()方法,该方法可以将供应商中性查询传递给供应商特定查询。
答案 3 :(得分:7)
General SQL Parser for Java不是开源的,但正是您所关注的。
答案 4 :(得分:6)
尝试Zql
答案 5 :(得分:3)
Hibernate使用ANTLR进行sql和hql解析。
JSqlParser也是一个不错的选择。虽然它在解析oracle pl / sql时有一些bug(或者一些未实现的功能)。 请参阅其论坛了解详情。
所以,如果您要解析oracle pl / sql,建议使用ANTLR。
答案 6 :(得分:2)