2009-12-22 10 views
6

Ich muss einen SQL-Formatierer in C# erstellen. Könnte mich jemand auf einige Ressourcen im Netz hinweisen? Muss ich einen vollwertigen Parser implementieren, oder gibt es einen einfacheren Weg dazu?SQL Formatter mit C#

+0

Gibt es einen einfacheren Weg, es zu tun? Kann ich es nicht ohne Parsing formatieren? – BlueSilver

Antwort

4

Hmm, eine andere Frage, die ich bin Stolpern über viel später, aber falls dies sonst jemand auf der ganzen Linie nützlich ist, habe ich implementiert eine Open-Source (AGPL) T-SQL Formatierer: http://www.architectshack.com/PoorMansTSqlFormatter.ashx

Mein Ansatz beinhaltet definitiv kein vollständiges SQL-Parsing (T-SQL ist eine sehr komplexe Sprache, ich bewerte nicht meine Chancen, einen kompletten Parser selbst zu entwickeln und zu pflegen), sondern token und identifizieren dann Hauptstrukturen im SQL, Nach Stichwort. Das Ergebnis ist ein partieller Syntaxbaum mit allen formatierungsrelevanten Teilen.

Wie in Antworten auf die Frage @astander verlinkt, gibt es kommerzielle Optionen für umfassende SQL-Parsing und viele Parser-Builder da draußen - aber keine vollständigen Open-Source-T-SQL-Parser als ich weiß.

Einen Parser für einfache Auswahlen, Aktualisierungen, Löschungen zu erstellen, ist einfach - die Verarbeitung von abgeleiteten Tabellen und Unterabfragen wird ein wenig schwieriger; dann OUTPUT-Klauseln, MERGE-Anweisungen, Multi-Statement-Skripte, CTEs, die Dutzende von DDL-Anweisungen, die T-SQL enthält, usw.: Es wird unordentlich.

+0

Diese Bibliothek funktionierte wirklich gut für mich, und es gibt jetzt auch ein Nuget für sie gepackt: http://nuget.org/packages/PoorMansTSQLFormatter/ –

+0

Ich ging zum git Hub, lud den Master herunter und nutzte die winform App. –

1

Es gibt auch die SQLinForm SQL beautifier, die eine C# API bei www.sqlinform.com hat