Kommentare bei SQL-Skripten

Hallo,

das ist zwar bestimmt trivial, aber ich weiß das leider trotzdem nicht und bis ich das jetzt wieder finde…
Ich hab schon herausgefunden, daß man mehrere aufeinanderfolgende SQL-Statements durch ; trennt. Nun stellt sich für mich die Frage, ob es auch fest definierte Kennzeichen für Kommentare gibt, die man bei einer solchen Abfolge von SQL-Statements zur Erklärung dazu schreiben möchte.

Gruß

Thomas

Hi,

am besten /* blalaber*/ das geht auch über mehre Zeilen
ansonsten mit – für einen einzeiligen Komentar.

Grüße

Chris

Hallo Chris,

am besten /* blalaber*/ das geht auch über mehre Zeilen
ansonsten mit – für einen einzeiligen Komentar.

das heißt, wenn ich in einem Skript alle Kommentare rauslöschen möchte, dann muß ich alle Zeilen löschen, die mit – beginnen und dann noch den ganzen Text, der zwischen /* und */ steht, sehe ich das richtig?

Gruß

Thomas

Hi,
Alle Kommentare löschen? Die meisten ärgern sich über zu wenig Kommentare …

Aber dein Ansatz ist nur eine erste Näherung, da die Zeichen ja auch in Literalen vorkommen können, also zum Beispiel

select * from x where y = ‚–‘;

Wenn du es richtig machen willst, wirst du um einen rudimentären parser nicht drum rum kommen.

Jens

Hallo,

etwas muss man noch wegen der HINTS aufpassen. Hints sind Anweisungen für den Optimizer, bestimmte Strukturen zu verwenden. Man benutzt sie, um die Datenbankperformance zu ruinieren. Und weil man es besser weiß als Mathematiker, die nichts anderes tun, als sich die geilsten Optimierungsalgorithmen auszudenken. Hints stehen innerhalb von SELECT-Statements in /* */.

Gruß

Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Peter,

etwas muss man noch wegen der HINTS aufpassen. Hints sind
Anweisungen für den Optimizer, bestimmte Strukturen zu
verwenden. Man benutzt sie, um die Datenbankperformance zu
ruinieren. Und weil man es besser weiß als Mathematiker, die
nichts anderes tun, als sich die geilsten
Optimierungsalgorithmen auszudenken. Hints stehen innerhalb
von SELECT-Statements in /* */.

das an sich stört mich mal recht wenig. Ich will hier die ja eigentlich nichts direkt aus dem Skript raus löschen, sondern das Skript analysieren.
Bei den zu analysierenden Skripten geht es mir dabei um die Tabellenerstellungsskripte, bei denen ich Tabellenname, Feldname und Feldeigenschaften irgendwie herausholen möchte um zwei Tabellen, auf die ich nicht unbedingt direkt Zugriff habe, vergleichen zu können.

Gruß

Thomas

Hi Jens,

Alle Kommentare löschen? Die meisten ärgern sich über zu wenig
Kommentare …

ich will die ja nicht aus dem Skript direkt rauslöschen. Ich will ein Skript automatisch analysieren lassen. Dabei kann ich natürlich keine Kommentare gebrauchen. In der Datei an sich solen und dürfen die ja auch gerne drin bleiben.

Aber dein Ansatz ist nur eine erste Näherung, da die Zeichen
ja auch in Literalen vorkommen können, also zum Beispiel

select * from x where y = ‚–‘;

Ja, leider besteht das Problem… Ich hab nur noch keine Idee, wie ich das lösen soll.

Wenn du es richtig machen willst, wirst du um einen
rudimentären parser nicht drum rum kommen.

Gerne, gibt es sowas vielleicht irgendwie fertig und kostenlos und einfach im Handling?

Gruß

Thomas

Hi Thomas,
a) versuch mal zu googeln vielleicht hast du glück
b) es gibt Compilergeneratoren und für SQL habe ich auch irgendwo mal eine frei verfügbare Gramatik gesehen (die nehmen die Compilergeneratoren als input)
c) Man könnte auch mal in den Sourcen von verdächtigen Open Source Projekten suchen (z.B. Eclipse müsste da was haben)

Das ist alles Thema Compilerbau und davon habe ich nicht wirklich Ahnung, daher auch nur ein paar grobe Ideen.

Falls du dich wirklich an die Suche/Arbeit machst, wäre ich an Ergebnissen interessiert.

Jens

Hallo,

wenn ich zwei Schemata vergleichen sollte, würde ich die Skripte einspielen und die Systemtabellen vergleichen. Das geht relativ schnell (ha ha).

Gruß

Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Peter,

wenn ich zwei Schemata vergleichen sollte, würde ich die
Skripte einspielen und die Systemtabellen vergleichen. Das
geht relativ schnell (ha ha).

Das wird so wohl nichts. Bei meinem Provider habe ich nur Zugriff auf meine Datenbank und nicht auf die Systemtabellen. Ausserdem habe ich nur eine Datenbank. Um das Skript einspielen zu können würde ich aber zwei benötigen, denn in einer Datenbank sind zwei Tabellen mit gleichem Namen nicht ganz realistisch. :smile:

Gruß

Thomas