有没有办法解析SQL查询以提取列名和表名?

时间:2008-09-11 14:27:19

标签: sql parsing

我需要分析单独的文本文件中的150多个SQL查询(只是实际的SQL代码,而不是数据结果),以便识别所有使用的列名和表名。优选地,每列和每个表出现的次数。使用嵌套的SELECT语句等编写一个全新的SQL解析程序比看起来更棘手。

必须有一个程序或代码可以执行此操作(或接近此处的代码),但我还没有找到它。

6 个答案:

答案 0 :(得分:10)

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

使用大约150种不同(和复杂)的SQL查询可以很好地工作。

答案 1 :(得分:4)

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

答案 2 :(得分:2)

你可能希望看到这样的东西:

JSqlParser

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

答案 3 :(得分:2)

如果你是应用程序需要这样做,并且可以访问具有表等的数据库,你可以运行类似的东西:

SELECT TOP 0 * FROM MY_TABLE

使用ADO.NET。这将为您提供一个DataTable实例,您可以为其查询列及其属性。

答案 4 :(得分:0)

请使用antlr ...写一个语法n按照步骤...在antlr site中给出...最后你会得到AST(抽象语法树)。对于给定的查询...我们可以遍历这个并带来查询中存在的所有表,列。

答案 5 :(得分:0)

在DB2中,您可以使用以下内容附加查询,但1是您可以指定的最小值;如果您尝试指定0:

,则会抛出错误

FETCH FIRST 1 ROW ONLY