使用C#的SQL格式化程序

9

我需要在C#中创建一个SQL格式化程序。有没有人能指导我一些互联网资源?我需要实现一个完整的解析器吗,还是有更简单的方法可以做到?


有没有更简单的方法?我能否在不解析的情况下格式化它? - BlueSilver
4个回答

6

4
嗯,我发现另一个问题,虽然时间有点晚,但如果以后有人有用的话,我已经实现了一个开源(AGPL)的T-SQL格式化程序:http://www.architectshack.com/PoorMansTSqlFormatter.ashx。我的方法绝对不涉及完整的SQL解析(T-SQL是一种非常复杂的语言,我不太可能自己开发和维护完整的解析器),而是通过关键字对SQL进行标记化并识别主要结构。结果是一个部分解析树,其中所有与格式相关的部分都被分离出来。如@astander所链接的答案中所述,有商业选项用于全面的SQL解析,并且有很多解析器构建器可用 - 但据我所知,没有完整的开源T-SQL解析器。制作简单的SELECT、UPDATE、DELETE解析器很容易 - 处理派生表和子查询会变得有点困难;然后是输出子句、合并语句、多语句脚本、CTE、T-SQL包含的几十个DDL语句等等:它变得混乱了。

这个库对我来说非常好用,现在也有一个Nuget包可供使用:http://nuget.org/packages/PoorMansTSQLFormatter/ - David McClelland
我去了 GitHub,下载了主分支并使用了 WinForm 应用程序。 - Valamas
1
请注意,它是根据AGPL许可证授权的,因此如果您使用它,您必须开源自己的代码。 - StriplingWarrior

3

当我遇到紧急情况需要让某些东西看起来“格式化”时,我会转向http://www.dpriver.com/pp/sqlformat.htm

。这个网站可以帮助我将SQL代码转换成易读的格式,非常方便。


1

此外,还有SQLinForm SQL美化器,其具有C# API,网址为www.sqlinform.com。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接