SQL Formatter using C#
I need to create an SQL format开发者_如何学Pythonter in C#. Could anyone point me to some resources on the net? Do I need to implement a full-fledged parser, or is there an easier way to do it?
Have a look at
Parsing SQL code in C#
Also hav a look at
Sql Pretty Printer
Hmm, another question I'm stumbling across much later, but in case this is useful to anyone else down the line, I've implemented an open-source (AGPL) T-SQL formatter: http://www.architectshack.com/PoorMansTSqlFormatter.ashx
My approach definitely does not involve full SQL parsing (T-SQL is a very complex language, I don't rate my chances of developing and maintaining a complete parser on my own) but rather tokenizing and then identifying major structures in the SQL, by keyword. The result is a partial parse tree with all the formatting-relevant parts broken out.
As noted in answers to the question @astander linked to, there are commercial options for comprehensive SQL parsing, and lots of parser builders out there - but no complete open-source T-SQL parsers than I know of.
Making a parser for simple selects, updates, deletes is straightforward - handling derived tables and subqueries gets a little harder; then OUTPUT clauses, MERGE statements, multi-statement scripts, CTEs, the dozens of DDL statements T-SQL contains, etc: it gets messy.
When I am in a crunch and need to make something at least look "formatted", I jump to
http://www.dpriver.com/pp/sqlformat.htm
There is also the SQLinForm SQL beautifier which has a C# API at www.sqlinform.com
精彩评论