Qualche libreria Java là fuori che convalida la syntax SQL?

Non sono sicuro che esista o meno, quindi ho pensato di sfruttare la saggezza degli altri ..

Mi stavo chiedendo se ci sono delle librerie Java là fuori che possono essere utilizzate per convalidare la syntax di una query SQL. So che ci sono molte deviazioni dalle specifiche SQL comuni, quindi probabilmente funzionerebbe solo contro qualcosa come SQL: 2006, ma sarebbe certamente sufficiente.

Il mio objective è quello di utilizzare questo per scopi di test unitario senza dover tentare l’esecuzione contro il DB. So che è di uso limitato, ma sarebbe comunque utile.

Grazie!

Non penso che ci siano tali librerie. La syntax SQL ha troppi derivati.

Una ansible soluzione sarebbe quella di utilizzare parti di un DBMS Java puro open source come SmallSQL . In questo progetto è ansible creare un’istanza di SQLParser . I riferimenti necessari alla connessione possono essere rimossi molto facilmente.

Forse puoi usare Antlr, ha un certo numero di grammatiche SQL e una libreria Java , oltre a plugin per vari IDE Java.

O come consigliato, usa il parser di utility SQL open source come SQuirreL SQL Client .

Il parser SQL generale può eseguire il controllo della syntax SQL offline . Database supportati: Oracle, DB2, MySQL, SQL Server, Teradata e PostgreSQL.

Prova il parser JSQL .

Oltre a convalidare, ottieni una rappresentazione significativa della query.
Ciò consente, ad esempio, di accettare solo comandi “determinati”; manipolare
la query, “ridimensionarla”, ecc.

SQL4J è un parser SQL scritto in Java.

http://www.cs.toronto.edu/~jglu/sql4j/index.htm

Con JOOQ non commetterai mai un errore in SQL. Il compilatore Java si prenderà cura di questo.

Potresti essere in grado di estrarre il codice di analisi da HSQL , che è java e open source.

Apache Derby è un database SQL open source implementato interamente in Java e disponibile con licenza Apache, versione 2.0 . In passato era conosciuto come IBM Cloudscape .

Puoi provare a riutilizzare il codice di analisi da org.apache.derby.impl.sql .