MySQL-Engine ändern für mehrere Tabellen

Submitted by Erik Wegner on
Body

Der folgende Befehl liest alle Tabellen einer Datenbank aus. Deren Name wird genutzt, um einen neuen Befehl zu erstellen, der die Datenbankengine ändert.

SELECT CONCAT('ALTER TABLE ', table_name, ' ENGINE=InnoDB;') 
  FROM information_schema.tables 
  WHERE table_schema = 'DATENBANKNAME' AND Engine <> 'InnoDB' 
  ORDER BY table_name DESC

Zuerst werden alle Tabellen einer Datenbank ausgegeben, die noch nicht InnoDB als Engine verwenden. Die gewünschte Datenbank wird als Bedingung an table_schema übergeben.

Die gefundenen Tabellennamen werden mit Hilfe des Befehls CONCAT zu einer neuen Zeichenkette zusammengefügt. Dies ist der notwendige SQL-Befehl, der MySQL anweist, die Datenbanktabelle zu ändern.

Die Ausgabe wird über die Zwischenablage wieder an die MySQL-Befehlszeile übergeben.

Categories