Bibliothèque d’parsingur SQL pour Java

Existe-t-il une bibliothèque Java open-source pour parsingr les instructions SQL?

Si possible, il devrait être suffisamment personnalisable ou flexible pour pouvoir également parsingr (ou au moins ignorer) la syntaxe propre au fournisseur (telle que les définitions de tablespace Oracle ou la clause LIMIT de MySQL).

Dans le cas contraire, le respect ssortingct du standard SQL est également une bonne chose.

Mise à jour: j’en ai besoin pour deux choses:

  • fournir une interface SQL à une firebase database non SQL (mappage vers des appels d’API internes)
  • réécrire SQL avant de passer à la firebase database réelle (par exemple Oracle)

ANTLR3 dispose d’une grammaire SQL ANSI disponible. Vous pouvez l’utiliser pour créer votre propre parsingur.

ANTLR4 a une grammaire SQL .

  • JSqlParser
  • L’parsingur de Presto est écrit en utilisant ANTLR4 et possède ses propres classes AST immuables qui sont construites à partir de l’parsingur. L’AST a un visiteur et une jolie imprimante.

Analyseur

Si vous avez besoin d’un parsingur, il devrait y avoir un parsingur dans la base de code d’ Apache Derby .

Traiter avec SQL spécifique au fournisseur

Vous voudrez peut-être examiner la méthode .native () sur l’object Connection jdbc que vous pouvez lui transmettre pour les requêtes neutres du fournisseur qui seront traitées ultérieurement dans les requêtes spécifiques du fournisseur.

Général SQL Parser pour Java n’est pas open source, mais est exactement ce que vous recherchez.

Essayez Zql

Hibernate utilise ANTLR pour l’parsing SQL et SQL.

JSqlParser est également une bonne option. Bien que certains bogues (ou certaines fonctionnalités ne soient pas implémentées) lors de l’parsing d’Oracle pl / sql. voir son forum pour plus de détails.

Donc, si vous parsingz oracle pl / sql, ANTLR est recommandé.

Qu’est-ce que vous voulez faire avec le SQL analysé? Je peux recommander quelques implémentations Java de Lex / Yacc ( BYACC / J , Java Cup ) avec lesquelles vous pouvez utiliser une grammaire SQL existante.

Si vous voulez réellement faire quelque chose avec la grammaire analysée résultante, je pourrais vous suggérer de regarder Derby , une firebase database SQL open source écrite en Java.