使用C#的SQL Formatter

我需要在C#中创建一个SQL格式化程序。 有人能指点我网上的一些资源吗? 我是否需要实现一个完整的解析器,还是有更简单的方法来实现它?

看一下

在C#中解析SQL代码

还看看

Sql Pretty Printer

嗯,另一个问题我后来遇到磕磕绊绊,但如果这对其他任何人都有用,我已经实现了一个开源(AGPL)T-SQL格式化程序: http : //www.architectshack.com /PoorMansTSqlFormatter.ashx

我的方法肯定不涉及完整的SQL解析(T-SQL是一种非常复杂的语言,我不评价我自己开发和维护完整解析器的机会),而是标记化然后识别SQL中的主要结构,关键词。 结果是部分解析树,其中所有格式相关的部分都已分解。

正如在@astander链接到的问题的答案中所指出的,有全面的SQL解析的商业选项,以及许多解析器构建器 – 但没有比我所知的完整的开源T-SQL解析器。

为简单的选择,更新,删除创建解析器很简单 – 处理派生表和子查询变得有点困难; 然后是OUTPUT子句,MERGE语句,多语句脚本,CTE,T-SQL包含的许多DDL语句等:它变得混乱。

当我处于紧张状态并需要制作至少看起来“格式化”的东西时,我会跳到

http://www.dpriver.com/pp/sqlformat.htm

还有一个SQLinForm SQL美化器,它在www.sqlinform.com上有一个C#API