任何人都可以帮我吗?如何使用C#解析SQL文件?
我有一堆.sql文件。我想在服务器上执行这些文件之前解析(验证)这些文件。
我有许多在线网站解析代码。但我想用C#解析代码。
所以,请你指导。如果有任何工具,我需要使用DLL。
我只是想分析该文件并没有执行它
任何人都可以帮我吗?如何使用C#解析SQL文件?
我有一堆.sql文件。我想在服务器上执行这些文件之前解析(验证)这些文件。
我有许多在线网站解析代码。但我想用C#解析代码。
所以,请你指导。如果有任何工具,我需要使用DLL。
我只是想分析该文件并没有执行它
一种方法是在服务器上执行它,除了SET PARSEONLY ON(以便它被解析但未执行):我认为这是MS查询分析器如何执行它。
Antler Parser Generator是你最好的选择。对于您想要解析的SQL版本,可能存在预定义的语法。
快速谷歌扔了http://www.antlr.org/与plugin for ms sql或曾经有过一些所谓的Visual Studio数据库专业人士的other sql dialects
Visual Studio中的一个。它后来被转入Team Developer。
无论如何,他们通过在数据库中执行并对结果进行测试来“编译”sql代码。我想如果这就是他们如何验证它的工作,那么这也许是你做得最好的方法。
你可以有方法可以得到查询作为输入和
在SQL Server端,你可以有一个SET PARSEONLY ON语句,然后在“运行”中 查询。该查询实际上不会运行,但会报告任何错误。
如果你真的想这样做,你应该问自己两次(或者甚至三次:-))。
即使你找到一个解决方案,这似乎适用于你现在的文件,可能会有各种各样的角落案件不会被覆盖。有一个本地数据库引擎解析它的建议是可行的,但在本地执行的操作和服务器上执行的操作之间仍然会有很多小的语法差异。
我的建议是让服务器解析并验证它 - 它基本上是真正确定的唯一方法。
DMS Software Reengineering Toolkit拥有SQL解析器,用于构建许多基于SQL的工具。
一个这样的工具是一个Formatter格式器,它分析源文本并很好地格式化结果。如果格式化程序无法解析源代码,则会生成非零进程状态。
你可以简单地“格式化”一个文件;如果格式化失败,它不是合法的语法。
这些格式化程序是商业产品。
编辑2011年8月:DMS SQL解析器现在可以处理完整的SQL 2011标准语法。
你真的想完全解析SQL文件吗? 或者只是验证它是否是有效的SQL,执行时不会出错? – BradC 2010-06-01 18:44:14
@BradC - 或者至少,执行时不会抛出* parse *错误; p – 2010-06-01 18:45:35
是否要验证sql的语法? – Arseny 2010-06-01 18:46:15