Libreria SQL parser per Java

Esiste una libreria Java open source per l’analisi delle istruzioni SQL?

Se ansible, dovrebbe essere personalizzabile o abbastanza flessibile per essere in grado di analizzare (o almeno ignorare) la syntax specifica del fornitore (come le definizioni di tablespace Oracle o la clausola LIMIT di MySQL).

In caso contrario, anche la stretta osservanza dello standard SQL va bene.

Aggiornamento: ho bisogno di questo per due cose:

  • fornitura di un’interfaccia SQL a un database non SQL (associazione alle chiamate API interne)
  • riscrittura di SQL prima che vada al database attuale (ad es. Oracle)

ANTLR3 ha una grammatica ANSI SQL disponibile. Puoi usarlo per creare il tuo parser.

ANTLR4 ha una grammatica SQL .

  • JSqlParser
  • Il parser di Presto è scritto usando ANTLR4 e ha le sue immutabili classi AST che sono state create dal parser. L’AST ha un visitatore e una stampante carina.

parser

Se hai bisogno di un parser dovrebbe esserci un parser nel codice base di Apache Derby .

Trattare con SQL specifico del fornitore

È ansible che si desideri esaminare il metodo .native () sull’object jdbc Connection che è ansible passare a query indipendenti dal produttore che verranno elaborate in query specifiche del fornitore.

SQL Parser per Java non è open source, ma è esattamente quello che stai cercando.

Prova Zql

Hibernate usa ANTLR per l’analisi sql e hql.

JSqlParser è anche una buona opzione. Sebbene abbia alcuni bug (o alcune funzionalità non implementate) durante l’analisi di oracle pl / sql. vedere il suo forum per i dettagli.

quindi se stai analizzando oracle pl / sql, ANTLR è raccomandato.

Cosa vuoi fare con l’SQL analizzato? Posso consigliare alcune implementazioni Java di Lex / Yacc ( BYACC / J , Java Cup ) che è ansible utilizzare con una grammatica SQL esistente.

Se si vuole effettivamente fare qualcosa con la grammatica analizzata risultante, potrei suggerire di guardare Derby , un database SQL open source scritto in Java.