У меня есть 2-3 разных имени столбца, которые я хочу просмотреть во всей БД и перечислить все таблицы, в которых есть эти столбцы. Любой простой сценарий?
mysql
information-schema
Джоби Джой
источник
источник
Ответы:
Чтобы получить все таблицы со столбцами
columnA
илиColumnB
в базе данныхYourDatabase
:источник
DATABASE()
вместо строки для поиска в текущей выбранной базе данных.источник
TABLE_SCHEMA
в поля возвращаемого набора, чтобы увидеть все базы данных + таблицы, содержащие это имя столбца.show tables;
. Может кто-нибудь объяснить, почему это может иметь место?Проще сделать в одной строке SQL:
источник
источник
В версии, которая не имеет
information_schema
(более старые версии или некоторые ndb), вы можете вывести структуру таблицы и выполнить поиск по столбцу вручную.Теперь выполните поиск по имени столбца в
some_file.sql
предпочитаемом вами текстовом редакторе или используйте некоторые изящные сценарии awk.И простой скрипт sed для поиска столбца, просто замените COLUMN_NAME на ваш:
Вы можете отправить свалку напрямую в sed, но это тривиально.
источник
Для тех, кто ищет обратное, то есть ищет таблицы, которые не содержат определенного имени столбца, вот запрос ...
Это стало очень удобно, когда мы начали медленно реализовывать использование специального
ai_col
столбца InnoDB, и нам нужно было выяснить, какие из наших 200 таблиц еще предстоит обновить.источник
Если вы хотите « Получить только все таблицы », используйте этот запрос:
Если вы хотите « Получить все таблицы со столбцами », то используйте этот запрос:
источник
Используйте этот однострочный запрос, замените требуемый_колонное_имя именем вашего столбца.
источник
источник
Проблема с information_schema в том, что он может быть очень медленным. Это быстрее использовать команды SHOW.
После выбора базы данных вы сначала отправляете запрос SHOW TABLES. И тогда вы делаете SHOW COLUMNS для каждой из таблиц.
В PHP это будет выглядеть примерно так
источник
Это ^^ получит таблицы с ColumnA AND ColumnB вместо ColumnA ИЛИ ColumnB, как принятый ответ
источник