3

我需要解析 sql 语句并获取列名和表名。我尝试使用示例代码。我得到了表名,但我被困在为每个表获取列名。

4

5 回答 5

3

如果您真的需要这样做,那么您应该考虑使用适当的解析器工具包,例如ANTLR。这是一个相当陡峭的学习曲线,但周围有其他人已经构建的 SQL 语法。

手动启动你自己的解析器会导致你在除了最基本的查询之外的任何事情上遇到一堆错误。

于 2013-05-24T11:27:58.610 回答
2

您需要的是一个 SQL 解析器。

您可以尝试JSQLParserZQL

我已经成功地将两者用于您尝试做的同一件事。

您也可以尝试sqlparser。然而,这是商业的,我没有使用它的经验。

于 2013-05-24T12:16:31.010 回答
1

如果您有ResultSet对象,您可以阅读Column names and Table Names已触发的查询。

通过使用ResultSetMetaDataget MetaDataquery(如表名和列名)。

例子

于 2013-05-24T11:35:39.340 回答
0

结帐基础解析器http://foundationdb.github.io/sql-parser/

另请注意,JSQLParser 不再在 SourceForge 上,而是在https://github.com/JSQLParser/JSqlParser/wiki维护

于 2014-05-03T00:00:07.300 回答
0

您将需要为您的 SQL 语法创建一个解析器。ANTLR 允许创建这样的解析器,但创建语法可能非常困难。

这是 ANTLR 的现有语法列表http://www.antlr3.org/grammar/list.html

它包含适用于您的 mysql、oracle SQL 的语法。

于 2013-05-24T11:32:27.130 回答