Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como despejar seletivamente todas as tabelas innodb em um banco de dados mysql?


Se esta fosse uma operação única, eu faria:
use DB;
show table status name where engine='innodb';

e faça um copy/paste retangular da coluna Name:
+-----------+--------+---------+------------+-
| Name      | Engine | Version | Row_format |
+-----------+--------+---------+------------+-
| countries | InnoDB |      10 | Compact    |
| foo3      | InnoDB |      10 | Compact    |
| foo5      | InnoDB |      10 | Compact    |
| lol       | InnoDB |      10 | Compact    |
| people    | InnoDB |      10 | Compact    |
+-----------+--------+---------+------------+-

para um editor de texto e convertê-lo em um comando
mysqldump -u USER DB countries foo3 foo5 lol people > DUMP.sql

e importe depois de substituir todas as instâncias de ENGINE=InnoDB com ENGINE=MyISAM em DUMP.sql

Se você quiser evitar a mágica de copiar/colar retangular, você pode fazer algo como:
use information_schema;
select group_concat(table_name separator ' ') from tables 
    where table_schema='DB' and engine='innodb';

que retornará countries foo3 foo5 lol people