2010-02-08 2 views
13

Comment lister I toutes les tables contenant un nom de colonne donné? J'utilise Mysql version 4.1.13-nt-log. Je sais que les versions moins de 5 n'ont pas de DB information_scheme.Liste de toutes les tables contenant un nom de colonne donné

+0

une contre-question: pourquoi avez-vous besoin que? :) – Bozho

+1

Si vous voulez sérieusement le faire, vous pouvez afficher les résultats de SHOW TABLES et SHOW COLUMNS FROM dans un fichier texte en ligne de commande, puis utiliser Perl et grep pour la recherche – Yada

Répondre

0

essayez ceci:

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

puis faire les recherches à l'ancienne école dans un éditeur de texte avec FIND


a également trouvé cela ... semble prometteur, mais je ne sais pas comment vous êtes ambitieux

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

+0

Une solution simple et agréable, mais je suggère d'utiliser le no-data option, puisque tout ce qui vous intéresse est le schéma ... –

29

Trouver toutes les tables et colonnes où les noms de colonnes sont comme le terme de recherche:

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

L'OP était assez spécifique à propos de ne pas utiliser information_schema, cela ne répond pas à la question. – buc

+1

+ 1 parce que c'était ce que je cherchais lors de la recherche. – PeteGO

+0

+1 pour la même raison - résolu mon problème particulier et m'a épargné des tas de temps. – Redboots

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

beaucoup plus facilement

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