Domanda

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

Mi chiedevo se ci sono librerie Java là fuori che possono essere utilizzate per convalidare la sintassi di una query SQL. So che ci sono molte deviazioni dalle specifiche SQL comuni, quindi probabilmente funzionerebbe solo con qualcosa come SQL: 2006, ma sarebbe sicuramente sufficiente.

Il mio obiettivo è quello di utilizzare questo per scopi di unit test senza dover tentare l'esecuzione contro il DB. So che è di utilità limitata, ma sarebbe comunque utile.

Grazie!

È stato utile?

Soluzione

Non credo che ci siano tali librerie. La sintassi SQL ha troppi derivati.

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

Altri suggerimenti

Forse puoi usare Antlr, ha un certo numero di grammatiche SQL e a libreria Java , nonché plug-in per vari IDE Java.

O come consigliato, utilizzare il parser di utilità SQL open source come SQuirreL SQL client.

Parser SQL generale può fare controllo della sintassi SQL offline . Database supportati: Oracle, DB2, MySQL, SQL Server, Teradata e PostgreSQL.

Prova parser JSQL .

Oltre alla convalida, si ottiene una rappresentazione significativa della query.
Ciò ti consente, ad esempio, di accettare solo " certo " comandi; manipolare
la query "quot prettify" esso, ecc.

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 sotto < href = "http://db.apache.org/derby/license.html" rel = "nofollow noreferrer"> Licenza Apache, Versione 2.0 . In precedenza era noto come IBM Cloudscape .

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

Con JOOQ non commetterai mai errori in SQL. Il compilatore Java se ne occuperà.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top