我正在寻找一个SQL库,它将解析SQL语句并返回SQL语句的某种Object表示形式.我的主要目标实际上是能够解析SQL语句并检索SQL语句中存在的表名列表(包括子查询,联接和联合).
我正在寻找一个商业友好的许可证库(例如Apache许可证).我正在寻找一个库而不是SQL语法.我不想构建自己的解析器.
到目前为止我能找到的最好的是JSQLParser,他们给出的例子实际上非常接近我正在寻找的东西.然而,它无法解析太多好的查询(DB2数据库),我希望找到一个更可靠的库.
我怀疑你会找到任何可以使用的预先写好的东西.问题是ISO/ANSI SQL是一个非常复杂的语法 - 类似于超过600个生产规则IIRC.
Terence Parr的ANTLR解析器生成器(Java,但可以使用多种目标语言中的任何一种生成解析器)有几种可用的SQL语法,包括一对用于PL/SQL,一种用于SQL Server SELECT语句,一种用于mySQL,以及一种对于ISO SQL.
不知道他们是多么完整/正确/最新.
http://www.antlr.org/grammar/list
小智 5
你不需要重新发明轮子,那里已经存在这样一个可靠的SQL解析器库(它是商业的,而不是免费的),本文展示了如何检索SQL语句中存在的表名列表(包括子查询,联接和工会)这正是你要找的.
此SQL解析器库支持Oracle,SQL Server,DB2,MySQL,Teradata和ACCESS.
归档时间: |
|
查看次数: |
11527 次 |
最近记录: |