【问题标题】:How to parse SQL files using C#?如何使用 C# 解析 SQL 文件?
【发布时间】:2010-06-01 18:41:45
【问题描述】:

谁能帮帮我?

我有一堆 .sql 文件。我想在服务器上执行它们之前解析(验证)这些文件。

我有很多在线网站可以解析代码。但我想用 C# 解析代码。

所以请你指导一下。如果有任何工具,我需要使用的dll。

我只想解析文件而不执行它

【问题讨论】:

  • 您真的要完全解析 SQL 文件吗?或者只是验证它是否是执行时不会出错的有效 SQL?
  • @BradC - 或者至少,在执行时不会抛出 parse 错误;p
  • 你想验证sql的语法吗?

标签: c# sql parsing validation


【解决方案1】:

一种方法是在服务器上执行它,SET PARSEONLY ON 除外(这样它被解析但不被执行):我认为这就是 MS Query Analyzer 的做法。

【讨论】:

    【解决方案2】:

    您可以拥有可以将查询作为输入和
    在 SQL Server 端,你可以有一个 SET PARSEONLY ON 语句,然后“运行” 询问。查询实际上不会运行,但会报告任何错误。

    【讨论】:

      【解决方案3】:

      Antler Parser Generator 是您最好的选择。您要解析的 SQL 版本可能已经有预定义的语法。

      【讨论】:

        【解决方案4】:

        如果你真的想这样做,你应该问自己两次(甚至可能三次 :-))。

        即使您找到了似乎适用于您现在拥有的文件的解决方案,也可能存在各种无法涵盖的极端情况。让本地数据库引擎解析它的建议是可行的,但您在本地执行的操作与在服务器上执行的操作之间仍然存在许多小的语法差异。

        我的建议是让服务器对其进行解析和验证——这基本上是唯一确定的方法。

        【讨论】:

          【解决方案5】:

          DMS Software Reengineering Toolkit 具有 SQL 解析器,用于构建许多基于 SQL 的工具。

          一个这样的工具是FormatterFormatter,它解析源文本并很好地格式化结果。如果格式化程序无法解析源代码,它会产生一个非零进程状态。

          你可以简单地“格式化”一个文件;如果格式化失败,则它是不合法的语法。

          这些格式化程序是商业产品。

          2011 年 8 月编辑:DMS SQL 解析器现在可以处理完整的 SQL 2011 标准语法。

          【讨论】:

            【解决方案6】:

            一个快速的谷歌抛出 http://www.antlr.org/plugin for ms sqlother sql dialects 之一

            【讨论】:

              【解决方案7】:

              Visual Studio 曾经有一个名为 Visual Studio for Database Professionals 的东西。它后来被纳入 Team Developer。

              无论如何,他们通过在数据库中执行 sql 代码并测试结果来“编译”它。我想如果他们是这样验证它的工作原理的,那么这可能也是你最好的方法。

              【讨论】:

                猜你喜欢
                • 2013-09-30
                • 2010-10-25
                • 1970-01-01
                • 2012-05-24
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2013-04-11
                • 2013-11-28
                相关资源
                最近更新 更多