À la recherche d'un embellisseur ou d'un reformatteur SQL intégrable [fermé]

je suis à la recherche d'un Java open source beautifier ou reformatter pour SQL que je peux utiliser pour nettoyer les déclarations DDL que je génère avec openArchitectureWare .

rien dans la réponse à " code en ligne embellir et formater "est d'une utilité pour moi et je n'ai pas été en mesure d'obtenir simple SQL formater de travailler pour moi.

25
demandé sur Community 2008-11-23 17:10:59

8 réponses

mise à JOUR 2:

org.hibernate.jdbc.util.BasicFormatterImpl a été déplacé dans la version 4.0. Il est maintenant situé à: org.hibernate.engine.jdbc.internal.BasicFormatterImpl .

mise à JOUR 1:

La technologie

marche. Comme L'a noté Alex, org.hibernate.pretty.Formatter n'existe plus depuis la version 3.3.2.GA . Le remplacement est org.hibernate.jdbc.util.BasicFormatterImpl :

String formattedSQL = new BasicFormatterImpl().format(sql);

L'ORIGINAL Réponse:

si vous utilisez Hibernate, ils ont un intégré: org.hibernate.pretty.Formatter

String formattedSQL = new Formatter(sql).format();
41
répondu Robert J. Walker 2018-06-28 17:13:23

fait partie de l'eclipse Data Tools Platform est le SQL Development Tools Project .

la page décrivant comment utiliser le SQL Query Parser a une utilisation extrêmement brève de SQLQuerySourceFormat qui fournit ces options:

  • preserveSourceFormat = l'option pour préserver le formatage source d'entrée lorsque le texte source SQL est généré
  • statementTerminator = le caractère séparant plusieurs énoncés SQL
  • hostVariablePrefix = le caractère que preceedes une langue d'accueil variable
  • parameterMarker = le caractère qui identifie un hôte paramètre de langue
  • delimitedIdentifierQuote* = le personnage qui l'enferme délimité par des identificateurs dont l'écriture dans les cas seront préservés
  • omitSchema = le schéma actuel (omis dans SQL source, l'implicite à table non qualifié références)
  • qualifyIdentifiers = le drapeau décrivant la façon dont les identifiants SQL source sera qualifiée
  • preserveComments = l'option de préserver les commentaires dans la source SQL parsed ou / et la source SQL générée
  • generateCommentsForStatementOnly = l'option pour générer des commentaires pour la source SQL seulement dans le contexte de l'ensemble statement, ou si défini à false, pour les objets de requête SQL simple en dehors du contexte d'une statement aussi bien
5
répondu Stephen Denne 2009-02-12 10:27:11

avec hibernation v3.3.2.GA, org.hiberner.joli.Le formateur151930920 n'existe plus. Vous pouvez utiliser son remplacement : org.hiberner.jdbc.util.BasicFormatterImpl

Formatter f = new BasicFormatterImpl();
String formatted_sql_code = f.format(ugly_sql_code);
5
répondu Stephan 2013-04-22 08:32:19

avez-vous considéré:

http://www.sqlinform.com

ils fournissent à la fois une version API et une version en ligne de commande (ainsi qu'une version en ligne).

aucune connaissance des coûts cependant.

2
répondu Guy 2012-02-27 13:09:38

vous pouvez simplement utiliser un SQL grammar et construire L'AST avec antlr . Ensuite, vous pouvez afficher l'arbre dans le format que vous voulez.

1
répondu tcurdt 2009-02-11 00:01:03

peut-être jsqlparser va travailler pour vous.

pas aussi facile à trouver que vous pourriez le penser, car il ya quelques projets défunts là-bas. En fait, je n'ai pas réussi à trouver ainsi fini par faire ma propre chose (basé sur l'analyseur h2 - vous pouvez me contacter si tout le reste échoue). En conséquence, Je ne sais pas s'il a un plus beau, mais en écrire un sur le dessus devrait être assez simple.

il est basé sur une grammaire et JavaCC, donc probablement une meilleure option que de réinventer cette roue avec antlr en tout cas. Vous pouvez trouver si vous avez besoin de soutien différents dialectes de sql dans les instructions complexes que toute approche basée sur une grammaire échouera vous.

1
répondu mike g 2009-02-18 05:46:08

Serait-ce de travailler - Formateur SQL.

1
répondu Ferdeen 2009-02-18 17:32:52

donc c'est certainement ce que vous recherchez: une bibliothèque de formatage SQL qui prend en charge Oracle, SQL Server, DB2, MySQL, Teradata et PostgreSQL.

0
répondu James Wang 2011-12-27 14:47:08