J'ai 2-3 noms de colonnes différents que je veux rechercher dans la base de données entière et répertorier toutes les tables qui ont ces colonnes. Un script facile?
mysql
information-schema
Jobi Joy
la source
la source
Réponses:
Pour obtenir toutes les tables avec des colonnes
columnA
ouColumnB
dans la base de donnéesYourDatabase
:la source
DATABASE()
au lieu d'une chaîne pour rechercher dans la base de données actuellement sélectionnée.la source
TABLE_SCHEMA
aux champs de l'ensemble de retour pour voir toutes les bases de données + tables qui contiennent ce nom de colonne.show tables;
. Quelqu'un peut-il expliquer pourquoi cela pourrait être le cas?Plus simplement fait dans une seule ligne de SQL:
la source
la source
Dans les versions qui n'en ont pas
information_schema
(anciennes versions ou certaines ndb), vous pouvez vider la structure de la table et rechercher la colonne manuellement.Recherchez maintenant le nom de la colonne en
some_file.sql
utilisant votre éditeur de texte préféré, ou utilisez des scripts awk astucieux.Et un simple script sed pour trouver la colonne, remplacez simplement COLUMN_NAME par le vôtre:
Vous pouvez diriger le vidage directement dans sed mais c'est trivial.
la source
Pour ceux qui recherchent l'inverse de cela, c'est-à-dire qui recherchent des tables qui ne contiennent pas un certain nom de colonne, voici la requête ...
Cela s'est
ai_col
avéré très pratique lorsque nous avons commencé à implémenter lentement l'utilisation de la colonne spéciale d'InnoDB et que nous devions déterminer laquelle de nos 200 tables n'avait pas encore été mise à niveau.la source
Si vous voulez " Pour obtenir toutes les tables uniquement ", utilisez alors cette requête:
Si vous voulez " Pour obtenir toutes les tables avec des colonnes ", utilisez alors cette requête:
la source
Utilisez cette requête d'une ligne, remplacez le nom_colonne_désiré par votre nom de colonne.
la source
la source
Le problème avec information_schema est qu'il peut être terriblement lent. Il est plus rapide d'utiliser les commandes SHOW.
Après avoir sélectionné la base de données, vous envoyez d'abord la requête SHOW TABLES. Et puis vous affichez les colonnes pour chacune des tables.
En PHP, cela ressemblerait à quelque chose comme
la source
Que ^^ obtiendra les tables avec ColonneA ET ColonneB au lieu de ColonneA OU ColonneB comme la réponse acceptée
la source