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
SELECT
CONCAT('SELECT ',QUOTE(db),',',QUOTE(tb),',',QUOTE(col),',COUNT(1) FieldHasIt
FROM ',db,'.',tb,' WHERE \`',col,'\`=''',SearchString,''';') SearchSQL
FROM
(
SELECT table_schema db,table_name tb,column_name col FROM information_schema.columns
WHERE table_schema = 'mydb' AND
(column_type LIKE 'char(%' OR column_type LIKE 'varchar(%' OR column_type LIKE '%text')
) A,(SELECT 'Hello' SearchString) B;
Erstellen Sie damit eine Giant SQL-Textdatei. Führen Sie dann das folgende Giant SQL-Skript aus:
SQL="SELECT CONCAT('SELECT ',QUOTE(db),',',QUOTE(tb),',',"
SQL="${SQL} QUOTE(col),',COUNT(1) FieldHasIt FROM ',db,'.',tb,'"
SQL="${SQL} WHERE \`',col,'\`=''',SearchString,''';') SearchSQL FROM"
SQL="${SQL} (SELECT table_schema db,table_name tb,column_name col FROM"
SQL="${SQL} information_schema.columns WHERE table_schema='store_qa'"
SQL="${SQL} AND (column_type LIKE 'char(%' OR column_type LIKE 'varchar(%'"
SQL="${SQL} OR column_type LIKE '%text')) A,(SELECT 'Hello' SearchString) B;"
mysql -uroot -p... -ANe"${SQL}" > MegaSearch.sql
mysql -uroot -p... -AN < MegaSearch.sql > MegaSearchResults.txt
RESULTS_FOUND=`grep -c "1$" < MegaSearchResults.txt`
echo ${RESULTS_FOUND}
if [ ${RESULTS_FOUND} -gt 0 ] ; then grep "1$" < MegaSearchResults.txt ; fi
Die Ausgabe informiert Sie über die Datenbank, Tabelle und Spalte, in der die Daten angezeigt werden.
Versuche es !!!.
BEARBEITEN:
CONCAT('SELECT ',QUOTE(db),',',QUOTE(tb),',',QUOTE(col),',COUNT(1) FieldHasIt
FROM ',db,'.',tb,' WHERE \`',col,'\`=''',SearchString,''';')
MÜSSEN: Fügen Sie die beiden folgenden hinteren Häkchen für Tabellen hinzu, deren Name ein Leerzeichen enthält.
db,'.`',tb,'`',' WHERE