Ist es möglich, eine ganze Datenbanktabelle (Zeile und Spalte) zu durchsuchen, um eine bestimmte Zeichenfolge zu ermitteln?
Ich besitze eine Datenbank mit dem Namen A und ungefähr 35 Tabellen. Ich muss nach der Zeichenfolge mit dem Namen "Hallo" suchen und weiß nicht, auf welcher Tabelle diese Zeichenfolge gespeichert ist. Ist dies möglich?
Verwenden von MySQL
Ich bin ein Linux-Administrator und ich bin nicht vertraut mit Datenbanken, es wäre sehr hilfreich, wenn Sie die Abfrage auch erklären können.
Antworten:
Weitere Informationen: http://winashwin.wordpress.com/2012/08/28/mysql-search/
quelle
Bereits im Juli 2012 habe ich diesen Beitrag geschrieben
Abfrage zum Suchen und Ersetzen von Text in allen Tabellen und Feldern einer MySQL-Datenbank
Es verwendet die Tabelle information_schema.columns , um jedes CHAR-, VARCHAR- und TEXT-Feld aufzunehmen und ein textuelles REPLACE durchzuführen .
Bitte schauen Sie sich meinen alten Link an und verwenden Sie sein Paradigma, um eine Suche durchzuführen.
So wird beispielsweise für jede Textspalte in jeder Tabelle ein separates SELECT erstellt
Erstellen Sie damit eine Giant SQL-Textdatei. Führen Sie dann das folgende Giant SQL-Skript aus:
Die Ausgabe informiert Sie über die Datenbank, Tabelle und Spalte, in der die Daten angezeigt werden.
Versuche es !!!.
BEARBEITEN:
MÜSSEN: Fügen Sie die beiden folgenden hinteren Häkchen für Tabellen hinzu, deren Name ein Leerzeichen enthält.
quelle
Mit einem anderen Ansatz, bei dem keine SQL-Abfragen erstellt werden müssen, habe ich CRGREP als kostenloses OpenSource-Befehlszeilentool entwickelt, das Datenbanken (einschließlich MySQL) durchsucht und sowohl einfache "fred customer.name" -Typsuchen nach "fred" im "Namen" unterstützt "Spalte der Tabelle" customer "für komplexere Mustervergleiche wie" fr? d * .author "für den Mustervergleich mit allen" author "-Spalten in allen Tabellen.
quelle
Sie können alle Spalten aus allen Tabellen, die mit allen gesuchten Werten übereinstimmen, gleichzeitig zurückgeben, indem Sie die Antwort von RolandoMySQLDBA verwenden
PREPARE
undEXECUTE
die Abfrage mit und ausführen .quelle
Wenn Sie eine Bash verwenden können - hier ist ein Skript: Es benötigt einen Benutzer dbread mit pass dbread für die Datenbank.
Wenn jemand eine Erklärung möchte: http://infofreund.de/?p=1670
quelle
Wenn Sie Linux-Administrator sind, sollten Sie mit der Befehlszeile vertraut sein.
Ändern Sie
root
/root
zu Ihren MySQL-Anmeldeinformationen (oder verwenden Sie diese~/.my.cnf
),db_name
zu Ihrem Datenbanknamen undfoo
zu Ihrem Suchtext. Parameter--skip-extended-insert
fürmysqldump
zeigt jede Abfrage in separaten Zeilen an. Der Parameter--color=auto
fürgrep
hebt Ihre Zeichenfolge hervor und-w
stimmt mit dem gesamten Wort überein.quelle
Hast du Zugriff auf phpMyAdmin? Es hat eine Suchfunktion für jede Datenbank.
Oder verwenden Sie ein Skript Ihrer Wahl für das Ergebnis von (change dbname):
quelle
Ich konzentriere mich auf eine einfache Vorlagenlösung für Ihre Frage, die in der plsql für Oracle- Datenbank implementiert ist. Ich hoffe, dass ich sie auf MySql anpassen kann, indem ich einfach google. Sie müssen lediglich das Informationsschema in MySQL untersuchen und einige Tabellennamen und Spalten ersetzen.
Im Skript: Ist
ALL_TAB_COLUMNS
eine Informationsschematabelle mit allen Tabellenspalten "VARCHAR2", "NVARCHAR2", "NCHAR", "CHAR" bezieht sich auf Zeichenfolgenspaltentypen in Oracle. Sie müssen sie durch gleichwertige Typnamen von MySql% hello% ersetzen. Ist das Suchwort, ersetzen Sie es durch eine beliebige Zeichenfolge.
Das Ergebnis sind einige oder viele SQL-Skripte (basierend auf Ihren Tabellenspaltentypen), und die Ausführung dieser Skripte führt zu Ihrer Antwort.
Auch die Leistung und der Zeitaufwand sind von Bedeutung.
Ich hoffe, das wird nützlich sein
quelle
Es gibt eine schöne Bibliothek zum Lesen aller Tabellen, ridona
quelle
Verwenden Sie diesen Trick mit einer Codezeile
Spaltenname: Geben Sie den Namen aller Spalten ein, in denen Sie suchen.
Tabellenname: Geben Sie den gesamten Tabellennamen ein, in dem Sie suchen.
quelle
Wenn Sie MySQL Workbench verwenden, klicken Sie mit der rechten Maustaste auf das Datenbankschema und wählen Sie "Tabellendaten durchsuchen ...". Füllen Sie dann das Formular aus. Dadurch wird die gesamte Datenbank durchsucht. Wenn (oder wenn) die Ergebnisse angezeigt werden, klicken Sie zum Erweitern auf den Pfeil. Es werden das Schema, die Tabelle, die Primärschlüsseldaten, der Spaltenname und die tatsächlichen Daten angezeigt, die Ihrer Suche entsprechen.
Tipp: Wenn sich nichts ergibt, erweitern Sie Ihre Suche.
Bitte beachten Sie, dass dies nur dann wirklich nützlich ist , Text für die Suche (
char
,varchar
undtext
) Datentypen.quelle