¿Alguna biblioteca de Java por ahí que valide la sintaxis de SQL? [cerrado]

StackOverflow https://stackoverflow.com/questions/141499

  •  02-07-2019
  •  | 
  •  

Pregunta

No estoy seguro de si esto existe o no, por lo que pensé que aprovecharía la sabiduría de otros ...

Me preguntaba si existen bibliotecas de Java que puedan usarse para validar la sintaxis de una consulta SQL. Sé que hay muchas desviaciones de las especificaciones comunes de SQL, por lo que probablemente solo funcionará contra algo como SQL: 2006, pero eso ciertamente sería suficiente.

Mi objetivo es usar esto para propósitos de prueba de unidad sin necesidad de intentar la ejecución contra el DB. Sé que es de uso limitado, pero aún así sería útil.

¡Gracias!

¿Fue útil?

Solución

No creo que haya tales bibliotecas. La sintaxis SQL tiene demasiados derivados.

Una posible solución sería utilizar partes de un DBMS Java puro de código abierto como SmallSQL . En este proyecto, puede crear una instancia de SQLParser . Las referencias necesarias a la conexión se pueden eliminar muy fácilmente.

Otros consejos

Tal vez puedas usar Antlr, tiene una cantidad de Gramáticas SQL y una biblioteca de Java , así como complementos para varios IDE de Java.

O como se aconseja, use el analizador de utilidades SQL de código abierto como SQuirreL SQL Client Cliente .

Analizador de SQL general puede hacer comprobación de sintaxis de SQL fuera de línea . Bases de datos compatibles: Oracle, DB2, MySQL, SQL Server, Teradata y PostgreSQL.

Pruebe analizador JSQL .

Además de la validación, obtiene una representación significativa de la consulta.
Esto le permite, por ejemplo, aceptar solo " determinado " comandos manipular
la consulta, " prettify " eso, etc.

Es posible que pueda extraer el código de análisis desde HSQL , que es Java y código abierto.

Apache Derby es una base de datos SQL de código abierto implementada en su totalidad en Java y disponible en Licencia Apache, Versión 2.0 . Anteriormente se conocía como IBM Cloudscape .

Puede intentar reutilizar el código de análisis de org.apache.derby.impl.sql .

Con JOOQ nunca cometerás un error en SQL. El compilador de Java se encargará de eso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top