Mysql
 sql >> база данни >  >> RDS >> Mysql

Как селективно да изхвърлите всички innodb таблици в mysql база данни?

Ако това беше еднократна операция, бих направил:

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

и направете правоъгълно копиране/поставяне от колоната Име:

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

в текстов редактор и го преобразувайте в команда

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

и след това импортирайте след замяна на всички екземпляри на ENGINE=InnoDB с ENGINE=MyISAM в DUMP.sql

Ако искате да избегнете магията на правоъгълното копиране/поставяне, можете да направите нещо като:

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

което ще върне countries foo3 foo5 lol people



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL избира дата с предварително зададени стойности, ако датата не съществува

  2. php:как да предотвратите SQL инжектиране от $_POST

  3. получаване на грешка при дефиниране на името на събитието в mysqlworkbench 5.5

  4. Заобиколно решение за динамични изрази в съхранени процедури, извиквани от тригери

  5. Laravel - Създаване на таблици динамично (без миграция)