java - online - codigo embebido html
Buscando un embellecedor SQL embebible o reformateador (8)
Estoy buscando un embellecedor de Java de código abierto o reformateador para SQL que pueda usar para limpiar las declaraciones DDL que estoy generando con openArchitectureWare .
Nada en la respuesta al " Embellecedor y formateador de código en línea " me es útil y no he podido hacer que Simple SQL Formatter funcione para mí.
Podrías usar una gramática SQL y construir el AST con antlr . Luego puede generar el árbol en el formato que desee.
Parte del eclipse Data Tools Platform es el Proyecto de SQL Development Tools .
La página que describe cómo usar el Analizador de consultas SQL tiene un uso extremadamente breve de SQLQuerySourceFormat que proporciona estas opciones:
- preserveSourceFormat = la opción de conservar el formato de la fuente de entrada cuando se genera texto fuente SQL
- statementTerminator = el caracter que separa varias declaraciones SQL
- hostVariablePrefix = el caracter que antecede una variable de lenguaje de host
- parameterMarker = el caracter que identifica un parámetro de lenguaje de host
- delimitedIdentifierQuote * = el caracter que encierra los identificadores delimitados cuya escritura en el caso se conservará
- omitSchema = el esquema actual (omitido en fuente SQL, implícita para referencias de tabla no calificadas)
- qualifiedIdentifiers = la bandera que describe cómo los identificadores en la fuente SQL serán calificados
- preserveComments = la opción de conservar los comentarios en la fuente SQL analizada y / y la fuente SQL generada
- generateCommentsForStatementOnly = la opción para generar comentarios para el origen SQL solo en el contexto de la declaración completa, o si se establece en falso, para objetos SQL Query sencillos fuera del contexto de una declaración, así
¿Funcionaría esto? SQL Formatter.
Quizás jsqlparser funcione para usted.
No es tan fácil de encontrar como podría pensar, ya que hay unos pocos proyectos difuntos por ahí. De hecho, no pude encontrarlo, así que terminé haciendo lo mío (basado en el analizador h2; me puedes contactar si todo lo demás falla). Como consecuencia, no sé si tiene un embellecedor, pero escribir uno encima debería ser lo suficientemente directo.
Se basa en una gramática y JavaCC, por lo que probablemente sea una mejor opción que reinventar esta rueda con antlr en cualquier caso. Puede encontrar si necesita admitir varios dialectos de sql en declaraciones complejas que cualquier enfoque basado en una gramática le fallará.
Así que esto es definitivamente lo que está buscando: una biblioteca de formateador de SQL que admita Oracle, SQL Server, DB2, MySQL, Teradata y PostgreSQL.
Ha considerado:
Proporcionan tanto una versión de API como una versión de línea de comando (así como una versión en línea).
Sin embargo, no tiene conocimiento de los costos.
Con Hibernate v3.3.2.GA, org.hibernate.pretty.Formatter ya no existe. Puede usar su reemplazo: org.hibernate.jdbc.util.BasicFormatterImpl
Formatter f = new BasicFormatterImpl();
String formatted_sql_code = f.format(ugly_sql_code);
ACTUALIZACIÓN 2: org.hibernate.jdbc.util.BasicFormatterImpl se movió en la versión 4.0. Ahora se encuentra en: org.hibernate.engine.jdbc.internal.BasicFormatterImpl.
ACTUALIZACIÓN: la tecnología avanza. Como señaló Alex, org.hibernate.pretty.Formatter ya no existe a partir de la versión 3.3.2.GA. El reemplazo es org.hibernate.jdbc.util.BasicFormatterImpl:
String formattedSQL = new BasicFormatterImpl().format(sql);
Al momento de escribir esto, esta respuesta tiene la mayoría de los votos hacia arriba, y debería tener la respuesta correcta actual, así que la actualicé en consecuencia. Apoyos a Alex por mencionarlo.
...
RESPUESTA ORIGINAL: Si está usando Hibernate, tienen una función incorporada: org.hibernate.pretty.Formatter
String formattedSQL = new Formatter(sql).format();