Ich habe 2-3 verschiedene Spaltennamen, die ich in der gesamten Datenbank nachschlagen und alle Tabellen mit diesen Spalten auflisten möchte. Irgendein einfaches Skript?
mysql
information-schema
Jobi Joy
quelle
quelle
Antworten:
So rufen Sie alle Tabellen mit Spalten
columnA
oderColumnB
in der Datenbank abYourDatabase
:quelle
DATABASE()
anstelle einer Zeichenfolge auch in der aktuell ausgewählten Datenbank suchen.quelle
TABLE_SCHEMA
zu den Feldern des Rückgabesatzes hinzu, um alle Datenbanken + Tabellen anzuzeigen, die diesen Spaltennamen enthalten.show tables;
. Kann jemand erklären, warum dies der Fall sein könnte?Einfacher in einer SQL-Zeile erledigt:
quelle
quelle
In Versionen, die keine haben
information_schema
(ältere Versionen oder einige ndbs), können Sie die Tabellenstruktur sichern und die Spalte manuell durchsuchen.Suchen Sie nun den Spaltennamen
some_file.sql
mit Ihrem bevorzugten Texteditor oder verwenden Sie einige raffinierte awk-Skripte.Und ein einfaches sed-Skript, um die Spalte zu finden, ersetzen Sie einfach COLUMN_NAME durch Ihre:
Sie können den Dump direkt in sed leiten, aber das ist trivial.
quelle
Für diejenigen, die nach der Umkehrung davon suchen, dh nach Tabellen suchen, die keinen bestimmten Spaltennamen enthalten, ist hier die Abfrage ...
Dies war sehr praktisch, als wir langsam die Verwendung der speziellen
ai_col
Spalte von InnoDB implementierten und herausfinden mussten, welche unserer 200 Tabellen noch aktualisiert werden mussten.quelle
Wenn Sie " Nur alle Tabellen abrufen " möchten , verwenden Sie diese Abfrage:
Wenn Sie " Alle Tabellen mit Spalten abrufen " möchten , verwenden Sie diese Abfrage:
quelle
Verwenden Sie diese einzeilige Abfrage und ersetzen Sie den gewünschten Spaltennamen durch Ihren Spaltennamen.
quelle
quelle
Das Problem mit information_schema ist, dass es furchtbar langsam sein kann. Die Verwendung der SHOW-Befehle ist schneller.
Nachdem Sie die Datenbank ausgewählt haben, senden Sie zuerst die Abfrage SHOW TABLES. Und dann machen Sie SHOW COLUMNS für jede der Tabellen.
In PHP würde das ungefähr so aussehen
quelle
Das ^^ erhält die Tabellen mit ColumnA AND ColumnB anstelle von ColumnA OR ColumnB wie die akzeptierte Antwort
quelle