sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo volcar selectivamente todas las tablas de innodb en una base de datos mysql?

Si esta fuera una operación única, haría:

use DB;
show table status name where engine='innodb';

y haz un copiar/pegar rectangular desde la columna Nombre:

+-----------+--------+---------+------------+-
| 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    |
+-----------+--------+---------+------------+-

a un editor de texto y convertirlo en un comando

mysqldump -u USER DB countries foo3 foo5 lol people > DUMP.sql

y luego importar después de reemplazar todas las instancias de ENGINE=InnoDB con ENGINE=MyISAM en DUMP.sql

Si desea evitar la magia rectangular de copiar/pegar, puede hacer algo como:

use information_schema;
select group_concat(table_name separator ' ') from tables 
    where table_schema='DB' and engine='innodb';

que devolverá countries foo3 foo5 lol people