Einen SQL-Tabellenerstellungsbefehl analysieren

Hallo,

ich bräuchte für eine Aufgabe eine Möglichkeit, einen SQL_Tabellenerstellungsstring zu analysieren und in verschiedene Teile aufzudröseln um diese dann vergleichen zu können.
Dazu müßte ich im Prinzip den Tabellennamen herauslesen und dann jedes Feld mit den jeweiligen Einstellungen.
Dies möchte ich dann mit der vorhandenen Datenbank vergleichen und bei Bedarf wieder einen SQL-String erzeugen, der bei der aktuellen Datenbank die eventuell Notwendigen anpassungen vornimmt. Wobei ich im ersten Schritt schon mal zufreiden wäre, herauszufinden, ob die Tabelle existiert und wenn ja, ob alle im SQL-String vorkommenden Felder auch in dieser Tabelle existieren. Das Thema Eigenschaftsabweichungen bei den einzelnen Feldern werde ich dann später nochmals genauer anschauen, wenn ich den ersten Teil geschafft habe.

Gruß

Thomas

Du meinst aber jetzt schon mit php und nicht mit sql, oder?

Du hast im prinzip mehrere Möglichkeiten…
Die einfachste sollte aber über ein mysql_query(„describe tablename“) funktionieren.

HTH
Grüße
Munich

Hallo Munich,

Du meinst aber jetzt schon mit php und nicht mit sql, oder?

ja, meine schon PHP.

Du hast im prinzip mehrere Möglichkeiten…
Die einfachste sollte aber über ein mysql_query(„describe
tablename“) funktionieren.

Mit diesem Befehl bekomme ich wieder den Erstellungs-SQL-String der Tabelle, ich möchte aus diesen jetzt ja mit dem horhandenen String Tabellentechnisch vergleichen. Das heißt, sind alle Felder identisch etc. Wenn nein, wo sind die Unterschiede. Mir geht es also dann um den dann folgenden Teil, wie kann ich aus dem aus Deinem Befehl ausgegebenen String die einzelnen Felder extrahieren?

Gruß

Thomas

-.-

$tablename = "dummy";
$sql = "describe $tablename";
$query = mysql\_query($sql);
while ($result = mysql\_fetch\_assoc($query))
 {
 print\_r($result);
 echo "
";
 }

denk mal drüber nach…
Wenn ich Dir alle Arbeit abnehmen soll - darf ich Dir dann ne Rechnung schicken?

Ich befürchte, Du hast ihn nicht verstanden!

Er will einen SQL-Befehl analysieren und dann das ergebnis der Analyse mit der Datenbank vergleichen!

Könnte schwierig werden, einen SQL-Befehl zu parsen.
Oder eher Aufwändig.

CU TS

Hallo TS

Ich befürchte, Du hast ihn nicht verstanden!

Er will einen SQL-Befehl analysieren und dann das ergebnis der
Analyse mit der Datenbank vergleichen!

Könnte schwierig werden, einen SQL-Befehl zu parsen.
Oder eher Aufwändig.

Genau so ist es! Das andere hätte ich auch irgendwie noch herausgefunden, aber so…

Gruß

Thomas

Hallo Thomas,

ich habe DIr doch schon geschrieben, wie man zwei MySQL-Datenbanken auch ohne Zugriff auf die Systemdatenbank vergleichen kann, warum versuchst Du jetzt diesen Umweg?

MfG Georg v.

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

Hallo Georg,

ich habe DIr doch schon geschrieben, wie man zwei
MySQL-Datenbanken auch ohne Zugriff auf die Systemdatenbank
vergleichen kann, warum versuchst Du jetzt diesen Umweg?

jetzt gibt es zwei Möglichlkeiten:
Entweder hast Du noch irgendeinen Vorschlag gemacht, der mir entgangen ist, den ich aber jetzt auch im Archiv übersehen habe, oder aber, es war noch irgendetwas dabei, warum es doch nicht gegangen ist.
Vielleicht muß ich aber auch zusätzlich noch erwähnen, daß sich beide Datenbanken bei verschiedenen Providern befinden und somit ein direkter Zugriff auf beide Datenbanken gleichzeitig nicht möglich ist.
Könntest Du mir trotzdem nochmals auf die Sprünge helfen?

Gruß

Thomas