Ich muss die Komplexitätsstufe (einfach/mittel/komplex usw.) eines SQL durch die Anzahl der Vorkommen von bestimmten Schlüsselwörtern, Unterabfragen, abgeleiteten Tabellen, Funktionen usw. bestimmen, die die SQL bilden. Zusätzlich muss ich den SQL syntaktisch validieren.Analysieren von SQL zur Bestimmung der Komplexitätsstufe
Ich suchte im Internet und fand heraus, dass Perl 2 Klassen mit den Namen SQL::Statement
und SQL::Parser
hat, die genutzt werden könnte, um das gleiche zu erreichen. Ich habe jedoch festgestellt, dass diese Klassen mehrere Einschränkungen haben (wie CASE WHEN
Konstrukte nicht unterstützt usw.).
Wie schon gesagt, ist es besser, stattdessen einen benutzerdefinierten, präzisen SQL-Parser mit Lex/Yacc oder Flex/Bison zu erstellen? Welcher Ansatz wäre besser und schneller?
Bitte teilen Sie Ihre Gedanken dazu. Kann mich jemand auch auf irgendwelche Ressourcen verweisen, die das gleiche diskutieren.
Dank
Welche Datenbank? Microsoft SQLServer verfügt zum Beispiel über angepasste Tools für diese Art der Analyse. – mob
@mob: Die Datenbank ist Teradata –