2009-01-16 4 views
16

Suchen Sie nach einer raffinierten Hilfsfunktion/Methode zum Überschreiben aller definierten Tabellen, Spalten, gespeicherten Prozeduren usw. für eine MySql-Datenbank.Wie grep ich durch eine MySQL-Datenbank?

Ich hatte etwas ähnliches für SQL Server.

+0

Shazam! http://code.google.com/p/anywhereindb/ – doublejosh

Antwort

9

In der INFORMATION_SCHEMA Datenbank:

select * from columns WHERE TABLE_NAME LIKE '%tablename%' AND COLUMN_NAME LIKE '%columnname%' 

Mehr Infos hier: http://dev.mysql.com/doc/refman/5.0/en/information-schema.html

Ok, es antwortet nicht vollständig Ihre Frage, aber Sie sollten es zusammen zu stellen in der Lage, wie Sie von hier wollen .

0

Es gibt hier eine gespeicherte Prozedur (http://forge.mysql.com/tools/tool.php?id=232) für MySQL, die eine Tabelle zum Speichern der Ausgabe erstellt und anschließend die COLUMNS-Tabelle der Datenbank information_schema durchläuft, um alle Tabellen- und Spaltennamen der Datenbank zu erhalten. Führen Sie als Nächstes eine count() - Abfrage für die database.table für jede Spalte mit der entsprechenden Suchzeichenfolge in where-Bedingung aus. Wenn count()> 0 ist, hat diese Spalte den Suchbegriff, also fügt sie dieses Triplet (Datenbankname, Tabellenname, Spaltenname) in eine Tabelle ein. Letzte Auswahl * aus Tabelle, um die entsprechenden Datenbanktabellen- und Spaltennamen mit dem Suchbegriff anzuzeigen.

26

mysqldump --compact --skip-extended-insert -u root -proot mydb | grep "interesting string"

+0

Die Optionen compact und skip-extended-insert sind sehr nützlich. Vielen Dank. – CodeBlue

+0

Danke - das ist das, was ich wirklich wollte – Sparky

0

gemeinsame Ressource Grep (crgrep) sucht nach Tabelle/Spaltennamen und Daten übereinstimmen und unterstützt MySQL.

http://sourceforge.net/projects/crgrep/

sucht auch andere harte Ressourcen wie Inhalte in Archiven begraben zu suchen. Ich habe crgrep als Open Source Tool entwickelt.

+0

Craig - hast du eine Verbindung zu diesem Projekt? Wenn ja, sollten Sie es in Ihrer Antwort angeben. Ich sage das, weil Sie gerade eine fast identische Antwort auf zwei andere alte Fragen geschrieben haben ... –

+0

Ja, ich bin der Autor. Ich habe den Beitrag entsprechend aktualisiert. – Craig

Verwandte Themen