Pour toutes les tables de toutes les bases
“Version” séquentiel
la conversion de la table suivante sera faite que si la précédente est fini (ignorer les erreurs pour les tables déjà en InnoDB 😉 )
#!/usr/bin/env bash
for db in `mysql --batch --skip-column-names -e "show databases;" | egrep -v "mysql|information_schema|performance_schema|lost"`; do
echo "# "$db
for table in `echo "show tables" | mysql --batch --skip-column-names $db`; do
echo "-- "$table
mysql $db -e "ALTER TABLE $table ENGINE = InnoDB;"
done
done
" Version " Bourrin
#!/usr/bin/env bash
for db in `mysql --batch --skip-column-names -e "show databases;" | egrep -v "mysql|information_schema|performance_schema|lost"`; do
echo "# "$db
for table in `echo "show tables" | mysql --batch --skip-column-names $db`; do
echo "-- "$table
mysql $db -e "ALTER TABLE $table ENGINE = InnoDB;" &
done
done
Pour toutes les tables d’une base
Vous pouvez le faire de manière soft (Table par table)
#!/bin/bash
DATABASENAME="votrebdd"
for i in `echo "show tables" | mysql --batch --skip-column-names $DATABASENAME`; do
mysql $DATABASENAME -e "ALTER TABLE `$i` ENGINE = InnoDB;"
done
Ou en version “Multithread” (Bourrin)
#!/bin/bash
DATABASENAME="votrebdd"
for i in `echo "show tables" | mysql --batch --skip-column-names $DATABASENAME`; do
mysql $DATABASENAME -e "ALTER TABLE `$i` ENGINE = InnoDB;" &
done