8

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

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

4

6 回答 6

12

我实际上最终使用了一个名为 SQL Pretty Printer的工具。您可以购买桌面版,但我只是使用了免费的在线应用程序。只需将查询复制到文本框中,将输出设置为“列出数据库对象”,然后单击格式化 SQL 按钮。

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

于 2010-01-29T18:44:08.817 回答
4

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

于 2008-09-11T15:29:15.087 回答
2

您可能想要寻找这样的东西:

JSqlParser

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

于 2008-09-11T14:31:18.953 回答
2

如果您的应用程序需要这样做,并且可以访问包含表等的数据库,您可以运行类似:

SELECT TOP 0 * FROM MY_TABLE

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

于 2008-11-21T19:34:04.803 回答
0

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

于 2012-11-23T19:15:44.503 回答
0

在 DB2 中,您可以在查询中附加如下内容,但 1 是您可以指定的最小值;如果您尝试指定 0,它将引发错误:

FETCH FIRST 1 ROW ONLY

于 2018-05-25T13:22:36.390 回答