sql >> Databasteknik >  >> RDS >> Mysql

Hur man selektivt dumpar alla innodb-tabeller i en mysql-databas?

Om detta var en engångsoperation skulle jag göra:

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

och gör en rektangulär kopiera/klistra in från kolumnen Namn:

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

till en textredigerare och konvertera den till ett kommando

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

och importera sedan efter att ha ersatt alla instanser av ENGINE=InnoDB med ENGINE=MyISAM i DUMP.sql

Om du vill undvika den rektangulära kopierings-/klistramagin kan du göra något som:

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

som kommer att returnera countries foo3 foo5 lol people



  1. 6 sätt att välja dubbletter av rader i SQLite

  2. SQL:Hur håller man ordning på raderna med DISTINCT?

  3. Bästa sättet att lagra en PHP-apps inställningar?

  4. PostgreSQL-processnamn på Solaris