I need to create an SQL formatter 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?
The SQL Formatter is used with the purpose to beautify the SQL statements. It formats the code automatically and its working is based on simple algorithms. It formats the code based on easy rules and helps to write fancy SQL code.
Prettier code is easy to analyze and easy to maintain. The same principle applies to SQL queries.
MYSQL Formatter allows loading the SQL URL to beautify. Use your SQL URL to beautify. Click on the URL button, Enter URL and Submit. Users can also beautify and remove the comments from SQL.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With