Eu tenho 2-3 nomes de colunas diferentes que eu quero procurar em todo o banco de dados e listar todas as tabelas que possuem essas colunas. Algum script fácil?
mysql
information-schema
Jobi Joy
fonte
fonte
Respostas:
Para obter todas as tabelas com colunas
columnA
ouColumnB
no banco de dadosYourDatabase
:fonte
DATABASE()
vez de uma sequência para pesquisar no banco de dados selecionado no momento.fonte
TABLE_SCHEMA
-o aos campos do conjunto de retorno para ver todos os bancos de dados + tabelas que contêm esse nome de coluna.show tables;
. Alguém pode explicar por que esse pode ser o caso?Mais simplesmente feito em uma linha de SQL:
fonte
fonte
Na versão que não possui
information_schema
(versões mais antigas ou alguns ndb's), você pode despejar a estrutura da tabela e pesquisar a coluna manualmente.Agora pesquise o nome da coluna
some_file.sql
usando seu editor de texto preferido ou use alguns scripts bacanas do awk.E um script sed simples para encontrar a coluna, substitua COLUMN_NAME pelo seu:
Você pode canalizar o despejo diretamente no sed, mas isso é trivial.
fonte
Para quem procura o inverso disso, ou seja, procura por tabelas que não contêm um determinado nome de coluna, aqui está a consulta ...
Isso foi realmente útil quando começamos a implementar lentamente o uso da
ai_col
coluna especial do InnoDB e precisávamos descobrir quais de nossas 200 tabelas ainda tinham que ser atualizadas.fonte
Se você deseja " Obter apenas todas as tabelas ", use esta consulta:
Se você deseja " Obter todas as tabelas com colunas ", use esta consulta:
fonte
Use esta consulta de uma linha, substitua o nome_coluna_nome desejado pelo nome da coluna.
fonte
fonte
O problema com o information_schema é que ele pode ser terrivelmente lento. É mais rápido usar os comandos SHOW.
Depois de selecionar o banco de dados, você primeiro envia a consulta SHOW TABLES. E então você MOSTRA COLUNAS para cada uma das tabelas.
No PHP, isso seria algo como
fonte
Que ^^ obterá as tabelas com ColumnA AND ColumnB em vez de ColumnA OR ColumnB como a resposta aceita
fonte