mostrar - Biblioteca de analizador SQL para Java
microsoft jdbc driver 4.0 for sql server (7)
¿Qué quieres hacer con el SQL analizado? Puedo recomendar algunas implementaciones Java de Lex / Yacc ( BYACC/J , Java Cup ) con las que puede usar una gramática SQL existente.
Si realmente quieres hacer algo con la gramática analizada resultante, sugiero que veas Derby , una base de datos SQL de código abierto escrita en Java.
¿Existe una biblioteca Java de código abierto para analizar sentencias SQL?
Si es posible, debe ser personalizable o lo suficientemente flexible como para poder también analizar (o al menos ignorar) la sintaxis específica del proveedor (como las definiciones del espacio de tabla Oracle o la cláusula LIMIT de MySQL).
De lo contrario, la adhesión estricta al estándar SQL también está bien.
Actualización: Necesito esto por dos cosas:
- proporcionar una interfaz SQL a una base de datos que no sea SQL (asignación a llamadas API internas)
- reescribiendo SQL antes de que vaya a la base de datos real (por ejemplo, Oracle)
Hibernate usa ANTLR para sql y hql parsing.
JSqlParser también es una buena opción. Aunque tiene algunos errores (o algunas características no implementadas) al analizar oracle pl / sql. ver su foro para más detalles.
entonces, si está analizando Oracle pl / sql, se recomienda ANTLR.
Prueba Zql
ANTLR3 tiene una gramática ANSI SQL disponible. Puedes usar eso para crear tu propio analizador.
ANTLR4 tiene una gramática SQL .
General SQL Parser para Java no es de código abierto, pero es exactamente lo que está buscando.
Analizador
Si necesita un analizador, debe haber un analizador en la base de código de Apache Derby .
Tratando con SQL específico del proveedor
Es posible que desee ver el método .native() en el objeto de conexión jdbc, que puede pasarle las consultas neutrales del proveedor que se procesarán posteriormente en consultas específicas del proveedor.
- JSqlParser
- El analizador de Presto está escrito usando ANTLR4 y tiene sus propias clases de AST inmutables que se crean a partir del analizador. El AST tiene una impresora bonita y visitante.