2008-09-11 78 views
4

我在需要分析的单独文本文件中有150多个SQL查询(只是实际的SQL代码,而不是数据结果),以便识别所使用的所有列名称和表名。最好用每列和每个表格出现的次数。编写全新的SQL解析程序比使用嵌套的SELECT语句等更复杂。有没有办法解析SQL查询来提取列名和表名?

必须有一个程序或代码,这样做(或接近这个),但我还没有找到它。

回答

8

我实际上最终使用了一个名为 SQL Pretty Printer的工具。您可以购买桌面版本,但我只是使用免费的在线应用程序。只需将查询复制到文本框中,将输出设置为“List DB Object”并单击Format SQL按钮。

它使用大约150个不同的(和复杂的)SQL查询很好用。

+0

保存我的* $$ :) 谢谢。 – 2014-03-10 21:11:48

2

您可能要寻找这样的事情:

JSqlParser

它使用JavaCC的解析,并返回查询字符串作为一个对象图。我从来没有用过它,所以我不能保证它的质量。

3

如何使用MS SQLServer中的执行计划报告?您可以将其保存到一个xml文件,然后解析。

2

如果你的应用程序需要做到这一点,并已获得具有表等的数据库,你可以运行类似:

SELECT TOP 0 * FROM MY_TABLE 

使用ADO.NET。这会给你一个DataTable实例,你可以查询这些列及其属性。

0

请跟随antlr ...写一个语法n按照步骤..它在antlr网站中给出..最终你会得到AST(抽象语法树)。对于给定的查询...我们可以遍历这个并且将查询中存在的所有表,列。

相关问题