2010-02-08 3 views
13

Wie listet ich alle Tabellen auf, die einen bestimmten Spaltennamen enthalten? Ich benutze Mysql Version 4.1.13-nt-log. Ich weiß Versionen weniger als 5 haben keine information_scheme DB.Alle Tabellen auflisten, die einen bestimmten Spaltennamen enthalten

+0

eine Gegenfrage: Warum brauchen Sie das? :) – Bozho

+1

Wenn Sie ernsthaft wollen, können Sie Ergebnisse für SHOW TABLES und SHOW COLUMNS FROM in eine Textdatei in der Befehlszeile ausgeben und dann Perl und grep für die Suche verwenden – Yada

Antwort

0

try this:

mysqldump -u root -p –all-databases –single-transaction > all.sql 

und führen Sie dann die Suche der die Old-School-Weg in einem Texteditor mit finden


fand auch dieses ... sieht vielversprechend aus, aber ich bin nicht sicher, wie ehrgeizig Sie sind

http://mike.kruckenberg.com/presentations/Creating_INFORMATION_SCHEMA.pdf

+0

Eine nette einfache Lösung, aber ich würde die Verwendung der No-Daten empfehlen Option, da alles, was Sie interessieren, ist das Schema ... –

29

Suche alle Tabellen und Spalten, in denen Spaltennamen wie der Suchbegriff sind:

SELECT DISTINCT TABLE_NAME, COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE COLUMN_NAME LIKE '%partial_column_name%' 
    AND TABLE_SCHEMA='YourDatabase'; 
+1

Das OP war ganz spezifisch über NICHT mit information_schema, dies beantwortet nicht die Frage. – buc

+1

+ 1, weil es das war, wonach ich suchte. – PeteGO

+0

+1 aus dem gleichen Grund - löste mein besonderes Problem und rettete mir eine Menge Zeit. – Redboots

-2
select table_name,column_name,data_type,data_length 
from user_tab_columns 
where column_name LIKE 'WHATEVER_U_WANT' 
; 
0

viel leichter

SELECT DISTINCT TABLE_NAME FROM your_schema.columns WHERE column_name = 'your_column_name';