java - Java 的 SQL 解析器库 - 检索 SQL 语句中存在的表名列表

标签 java sql parsing

我正在寻找一个 SQL 库,它将解析 SQL 语句并返回 SQL 语句的某种对象表示形式。我的主要目标实际上是能够解析 SQL 语句并检索 SQL 语句中存在的表名列表(包括子查询、联接和联合)。

我正在寻找一个具有商业友好许可证(例如 Apache 许可证)的免费库。我正在寻找一个库而不是 SQL 语法。我不想构建自己的解析器。

到目前为止我能找到的最好的是JSQLParser ,以及 example他们给出的实际上非常接近我正在寻找的东西。然而,它无法解析太多好的查询(DB2 数据库),我希望找到一个更可靠的库。

最佳答案

我怀疑你会发现任何可以直接使用的预先写好的东西。问题在于 ISO/ANSI SQL 是一种非常复杂的语法 — 类似于 600 多个产生式规则 IIRC。

特伦斯·帕尔的 ANTLR parser generator (Java,但可以用多种目标语言中的任何一种生成解析器)有多种可用的 SQL 语法,包括一对用于 PL/SQL、一种用于 SQL Server SELECT 语句、一种用于 mySQL 和一种用于 ISO SQL。

不知道它们有多完整/正确/最新。

http://www.antlr.org/grammar/list

关于java - Java 的 SQL 解析器库 - 检索 SQL 语句中存在的表名列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5572793/

相关文章:

java - 在 AndroidManifest.xml 中添加 "@android:style/Theme.Dialog"后,我的 Android 应用程序崩溃

php - 在 PHP 中使用 SELECT 仅显示单行中的一个值的最安全、最正确的解决方案是什么?

java - 如何用java解析这个文本文件?

java - 向 Eclipse 添加字典以进行除英文以外的拼写检查

java - 即使应用程序崩溃后,IPV6 ServerSocket 仍在监听

java - 本地计算机上日历一年中不同的第一周

sql - sql:“扫描”中应有3个目标参数,在Golang中不是1个

MySQL - 访问表总和并与另一个表进行比较?

java - 如何使用 jsoup 解析 HTML 表格?

python-3.x - python嵌套循环在解析站点时不起作用