web-dev-qa-db-fra.com

Bibliothèque d'analyse SQL pour Java

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:

  • fournir une interface SQL à une base de données non SQL (mappage aux appels d'API internes)
  • réécriture de SQL avant qu'il ne passe dans la base de données réelle (par exemple, Oracle)
134
Thilo

ANTLR possède une grammaire ANSI SQL disponible. Vous pouvez l'utiliser pour créer votre propre analyseur.

ANTLR4 a un grammaire SQL .

51
duffymo
  • JSqlParser
  • l’analyseur de Presto est écrit avec ANTLR4 et a ses propres classes immuables AST qui sont construites à partir de l’analyseur. Le AST a un visiteur et jolie imprimante.
33
David Phillips

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.

9
Elijah

General SQL Parser pour Java n'est pas une source ouverte, mais bien ce que vous cherchez.

7
James

Essayez Zql

6
jagamot

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é.

3
Han Zheng

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.

2
Thomas Jones-Low