Existe-t-il une bibliothèque Java open source pour analyser les instructions SQL?
Si possible, il doit être personnalisable ou suffisamment flexible pour pouvoir également analyser (ou au moins ignorer) la syntaxe spécifique au fournisseur (comme les définitions d'espace de table Oracle ou la clause LIMIT de MySQL).
Sinon, le strict respect de la norme SQL est également très bien.
Mise à jour: j'en ai besoin pour deux choses:
- fournir une interface SQL à une base de données non SQL (mappage vers des appels d'API internes)
- réécriture de SQL avant qu'il n'aille dans la base de données réelle (par exemple, Oracle)
Réponses:
ANTLR3 a une grammaire ANSI SQL disponible. Vous pouvez l'utiliser pour créer votre propre analyseur.
ANTLR4 a une grammaire SQL .
la source
la source
Analyseur
Si vous avez besoin d'un analyseur, il devrait y avoir un analyseur dans la base de code d' Apache Derby .
Gérer le SQL spécifique au fournisseur
Vous pouvez consulter la méthode .native () sur l'objet Connection jdbc à laquelle vous pouvez lui transmettre des requêtes indépendantes du fournisseur qui seront post-traitées en requêtes spécifiques au fournisseur.
la source
Général SQL Parser for Java n'est pas open source, mais c'est exactement ce que vous recherchez.
la source
Essayez Zql
la source
Hibernate utilise ANTLR pour l'analyse SQL et hql.
JSqlParser est également une bonne option, bien qu'il ait quelques bogues (ou certaines fonctionnalités non implémentées) lors de l'analyse d'Oracle pl / sql. voir son forum pour plus de détails.
donc si vous analysez oracle pl / sql, ANTLR est recommandé.
la source
Que voulez-vous 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 suggérer de regarder Derby , une base de données SQL open source écrite en Java.
la source