1051 Stimmen

Wie kann ich alle Tabellen in MySQL finden, die bestimmte Spaltennamen enthalten?

Ich habe 2-3 verschiedene Spaltennamen, die ich in der gesamten Datenbank nachschlagen und alle Tabellen auflisten möchte, die diese Spalten haben. Gibt es ein einfaches Skript?

1 Stimmen

3voto

user2587656 Punkte 129

Das Problem mit information_schema ist, dass es furchtbar langsam sein kann. Schneller ist es, die SHOW-Befehle zu verwenden.

Nachdem Sie die Datenbank ausgewählt haben, senden Sie zunächst die Abfrage SHOW TABLES. Und dann führen Sie SHOW COLUMNS für jede der Tabellen aus.

In PHP würde das etwa so aussehen

    $res = mysqli\_query("SHOW TABLES");
    while($row = mysqli\_fetch\_array($res))
    {   $rs2 = mysqli\_query("SHOW COLUMNS FROM ".$row\[0\]);
        while($rw2 = mysqli\_fetch\_array($rs2))
        {   if($rw2\[0\] == $target)
               ....
        }
    }

0 Stimmen

Können Sie quantifizieren "furchtbar langsam" ? Bitte antworten Sie bis Bearbeitung (Änderung) Ihrer Antwort , nicht hier in den Kommentaren ( ohne "Bearbeiten:", "Aktualisieren:" oder ähnlich - die Antwort sollte so aussehen, als wäre sie heute geschrieben worden).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X