Existe-t-il une bibliothèque open-source Java) pour l’analyse des instructions SQL?
Si possible, il doit être suffisamment personnalisable ou flexible pour pouvoir également analyser (ou au moins ignorer) la syntaxe spécifique au fournisseur (telle que les définitions d'espace table Oracle ou la clause LIMIT de MySQL).
Sinon, le strict respect du standard SQL convient également.
Mise à jour: J'en ai besoin pour deux choses:
ANTLR possède une grammaire ANSI SQL disponible. Vous pouvez l'utiliser pour créer votre propre analyseur.
ANTLR4 a un grammaire SQL .
Analyseur
Si vous avez besoin d'un analyseur, il devrait y en avoir un dans la base de code de Apache Derby .
Traitement du code SQL spécifique au fournisseur
Vous voudrez peut-être examiner la méthode . Native () sur l'objet Connection jdbc à laquelle vous pourrez lui transmettre des requêtes indépendantes du fournisseur qui seront post-traitées dans des requêtes spécifiques du fournisseur.
General SQL Parser pour Java n'est pas une source ouverte, mais bien ce que vous cherchez.
Essayez Zql
Hibernate utilise ANTLR pour l’analyse SQL et HQL.
JSqlParser est également une bonne option. Bien qu’il ait quelques bugs (ou des fonctionnalités non implémentées) lors de l’analyse de Oracle pl/sql. voir son forum pour plus de détails.
donc, si vous analysez Oracle pl/sql, ANTLR est recommandé.
Que voulez-vous faire avec le SQL analysé? Je peux recommander quelques Java de Lex/Yacc ( BYACC/J , Java Cup )) d'utiliser une grammaire SQL existante avec.
Si vous voulez réellement faire quelque chose avec la grammaire résultante, je vous suggère de regarder Derby , une base de données SQL open source écrite en Java.