AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi DLEX und DYACC: SQL bzw PL/SQL Parser ?
Thema durchsuchen
Ansicht
Themen-Optionen

DLEX und DYACC: SQL bzw PL/SQL Parser ?

Ein Thema von MaBuSE · begonnen am 11. Nov 2008 · letzter Beitrag vom 17. Nov 2008
Antwort Antwort
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Re: DLEX und DYACC: SQL bzw PL/SQL Parser ?

  Alt 17. Nov 2008, 07:19
Hallo,
zuerst einmal Danke für Eure Antworten.

Zitat von alzaimar:
Wieso schickst Du das Skript nicht einfach zum Server und überlässt dem die Arbeit?
Welche zusätzlichen Befehle / Features möchtest Du einbauen?
Alle Datenbankänderungen werden bei uns per Skript geliefert.
Diese werden analysiert und um weitere Anweisungen ergänzt.
(grants, stored procedure Aufrufe, ...)
Außerdem sollen bestimmte "Langläufer" erkannt werden. (z.B. Updates auf bestimmte Tabellen)
Diese bearbeiteten Skripte werden auf einer speziellen Test Datenbank ausgeführt und wenn keine Fehler aufgetreten sind auf der Produktionsdatenbank.
Wir haben viele Datenbanken, einige davon im mehrstelligen TerraByte Bereich mit sehr sensiblen Daten, da kann man nicht eben mal ein Skript auf der Produktion laufen lassen.
Das Tool soll ein Bestehendes ablösen und den DBAs etwas Arbeit abnehmen.

Ich habe mittlerweile ein kommerzielles Produkt entdeckt, dass auf lexx/yacc basiert.
GSP - general sql parser ( http://www.sqlparser.com/howto.php )
(Die VCL Version besteht aus einer Hand voll *.dcu Dateien, es muss also keine dll mitgeliefert werden.)

Es macht eigentlich einen guten Eindruck. Ich war nur über das Beispielprogramm in der Trail entsetzt und hoffe, das der eigentliche Code nicht so katastrophal programmiert ist.
Kleines Beispielprogramm -> nicht kompilierfähig, >250 Compilerwarnungen, nicht gerade übersichtlich programmiert.

Aber mit einem eigenen kleinen Beispielprogramm bin ich sehr schnell zum Ziel gekommen.

Delphi-Quellcode:
...
var
  SqlParser: TGsqlparser;
  i: Integer;
  j: Integer;
  s: string;
begin
  // Parser mit Create erzeugen, Sprache (=Oracle) zuweisen.
  SqlParser := TgSqlParser.Create(DbvOracle);

  // SQL (PL/SQL) Text zuweisen
  SqlParser.SqlText.Assign(Memo1.Lines);

  if SqlParser.Parse = 0 then
  begin
    ...
    for i := 0 to SqlParser.SqlStatements.Count - 1 do
    begin
    ....
      // in SqlParser.SqlStatements[i].SqlStatementType steht der Typ z.B. update, create view, ...

      // verwendete Tabellen in dem Statement:
      for j := 0 to SqlParser.SqlStatements[i].Tables.Count - 1 do
      ...

      // neu formatiertes SQL (Die Formatierung lässt sich über diverse properties beeinflussen.)
      s := SqlParser.SqlStatements[i].PrettySql;
      // unverändertes SQL
      s := SqlParser.SqlStatements[i].GetTextFromParseTree

      // Auf die einzelnen Bestandteile der eigentlichen SQL Statements,
      // kann man natürlich mit bestimmten Properties analog zu oben auch zugreifen.
      // Es gibt auch die Möglichkeit auf den Lexxer und Syntaxbaum direkt zuzugreifen.
      // Damit ist dann alles möglich...
      ...
    end;
    ...
  end;
  ...
end;
...
Eine site Lizenz kostet nur 220 USD. Für das Geld bekomme ich es nicht selbst programmiert.
Wir haben es bestellt. Ich werde mal was zu meinen Erfahrungen schreiben, wenn ich das Projekt realisiert habe.
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz