SQL bibliothèque de l'analyseur de Java - Récupérer la liste des noms de table présente dans une instruction SQL
Je suis à la recherche d'un SQL Bibliothèque qui va analyser une requête SQL et de retourner une sorte de représentation d'Objet de l'instruction SQL. Mon principal objectif est en fait d'être en mesure d'analyser l'instruction SQL et de récupérer la liste des noms de table présents dans l'instruction SQL (y compris les sous-requêtes, jointures et les syndicats).
Je suis à la recherche d'une bibliothèque libre avec une licence favorable au monde des affaires (par exemple, licence Apache). Je suis à la recherche d'une bibliothèque et non pour une Grammaire SQL. Je ne veux pas construire mon propre analyseur.
Le meilleur que j'ai pu trouver jusqu'à présent a été JSQLParser, et la exemple qu'ils donnent est en fait assez proche de ce que je suis à la recherche d'. Cependant, il échoue analyse trop bon les requêtes de Base de données DB2) et je suis l'espoir de trouver un moyen plus fiable de la bibliothèque.
Vous devez vous connecter pour publier un commentaire.
Je doute que vous trouverez quelque chose prédéfinies que vous pouvez utiliser. Le problème, c'est que l'ISO/ANSI SQL, c'est très compliqué de grammaire — quelque chose comme plus de 600 règles de production IIRC.
Terence Parr est ANTLR analyseur générateur (Java, mais peut générer des analyseurs dans un certain nombre de langues cibles) a plusieurs SQL grammaires disponibles, y compris un couple de PL/SQL, l'un pour un Serveur SQL SELECT, l'un pour le serveur mySQL, et un pour ISO SQL.
Aucune idée de comment compléter/corriger/up-to-date à laquelle ils sont.
http://www.antlr.org/grammar/list
Vous n'avez pas besoin de réinventer la roue, il y a déjà un fiable analyseur SQL bibliothèque, (c'est commerical, n'est pas libre), et cet article montre comment récupérer la liste des noms de table présents dans l'instruction SQL (y compris les sous-requêtes, jointures et les syndicats), c'est exactement ce que vous cherchez.
http://www.dpriver.com/blog/list-of-demos-illustrate-how-to-use-general-sql-parser/get-columns-and-tables-in-sql-script/
Cet analyseur SQL bibliothèque prend en charge Oracle, SQL Server, DB2, MySQL, Teradata et l'ACCÈS.
Vous avez besoin de l'ultra-léger, ultra-rapide de la bibliothèque pour extraire les noms de tables en SQL (Disclaimer: je suis le propriétaire)
Il suffit d'ajouter les lignes suivantes dans votre pom
Et effectuez les opérations suivantes
Pour plus de détails, reportez-vous à la projet
Vieille question, mais je pense que ce projet contient ce dont vous avez besoin:
Outils de données du Projet - SQL Outils de Développement
Voici la documentation de la L'Analyseur de Requêtes SQL.
Aussi, voici un petit programme d'exemple. Je ne suis pas un programmeur Java, donc à utiliser avec précaution.