Analyseur pour Oracle SQL
Pour mon projet actuel, j'ai besoin d'un analyseur SQL qui analyse Oracle SQL.
Actuellement, je ai été en utilisant jsqlparser, qui a bien fonctionné pour les requêtes simples. Mais lorsque les fonctions spécifiques se produisent (par exemple, cast() ou ( + )), l'analyseur échoue.
Quelqu'un peut-il suggérer un analyseur qui est entièrement compatible avec Oracle SQL?
Meilleur,
Va
source d'informationauteur Will
Vous devez vous connecter pour publier un commentaire.
Avez-vous envisagé de Général Analyseur SQL? Je n'ai pas d'expérience avec moi-même, mais la navigation sur leur site web qu'il a du potentiel. Personnellement, j'ai roulé ma propre construite sur l'analyseur dans Eclipse Données des Outils de la Plate-forme (désolé je ne peux pas partager, il est propriétaire), mais maintenant, je dois évaluer celui que j'ai lié ci-dessus, car il prétend avoir plus de couverture de Oracle SQL que mon analyseur ne.
La ANTLR (v3v4) analyseur générateur a eu un certain nombre de Oracle SQL et PL/SQL grammaires écrites; voir la la grammaire de la liste (v3) pour plus de détails. De celles-ci:
Après avoir travaillé le même problème, j'ai réussi à obtenir un analyseur SQL de travail:
Mon code ressemble à ceci:
Les problèmes pour faire ce travail sont:
Pour obtenir un tel fichier, vous aurez besoin de creuser dans le dossier où Oracle SQL Developer paramètres sont stockés et il suffit de copier-coller ce contenu dans votre propre fichier.
Maintenant, en supposant que vous avez réussi à obtenir ce bien, ici, sont les problèmes et les points où je suis déçu par la fin de la solution:
La raison que j'ai posté cette réponse est de conduire la communauté l'attention sur le fait qu'avoir un Oracle SQL analyseur est parfaitement possible et peut-être un jour Oracle envisager d'exposer l'analyseur comme un avantage concurrentiel (je suis sûr qu'il ya des utilisateurs qui seraient heureux de payer des frais pour obtenir une licence).
Donné que la Société Oracle ne pouvait pas garder l'analyseur SQL pour SQL et PL/SQL VM en synchronisation lorsque les deux avions différents SQL analyseurs, il est peu probable qu'une tierce partie puisse être en mesure de créer un "pleinement conforme" de l'analyseur.
Quelles sont les données que vous essayez d'extraire à partir de la requête? La base de données Oracle lui-même peut avoir d'autres installations qui vous permettent d'extraire de l'information sans l'analyse de la requête.
Volonté, pourquoi ne pas utiliser l'Oracle de l'analyseur?
Vous avez besoin d'une connexion de base de données oracle. Si la sortie est ce que vous voulez, c'est la façon la plus simple d'obtenir ce que vous voulez, sans avoir à ré-inventer une autre couleur pour une roue. Dans cet exemple, j'ai limité le sql à 4000 caractères, mais vous pourrait nourrir une pl/sql tableau de varchar2 dans dbms_sql.fonction d'analyse, cela vous permet d'analyser sql est inimaginable de tailles.
Notre Logiciel DMS de Réingénierie, Trousse à outils peut être obtenue avec un Oracle PLSQL de l'analyseur, ou SQL 2011 analyseur. DMS fournit un analyseur, construit un AST, permet d'étudier/de transformer l'arbre de manière arbitraire, et la régénération de l'AST que le code source si vous voulez le faire.
Vous pouvez tester l'analyseur en téléchargeant le PLSQL formateur disponible sur le site web; qui utilise le même sous-jacent DMS machines; il suffit de ne pas analyser/transformer l'arbre.
Vous pourriez avoir besoin pour envelopper les instructions SQL dans un simple PLSQL procédure.
Essayer cette http://www.ibrezina.net/OracleSQL.tgz. C'est ANTLR3.3 grammaire pour Oracle PL/SQL. La grammaire est destinée aux C de cible, mais peut être facilement converti en Java ou C#. Votre tâche, liste des tableaux inclus dans une requête est déjà inclus comme un exemple.