Schlagwort-Archive: Refactoring

MySQL: RENAME SCHEMA or DATABASE Workarounds

Leider ist es nicht möglich ein Schema bzw. Datenbank in MySQL mittels eines SQL-Standard-Befehls umzubennen. Hier folgen einige Workarounds:

SQL-Kommando in einer Bash-Schleife

mysql [OPTIONS] old_schema -sNe 'show tables' | 
while read table; 
  do mysql [OPTIONS] -sNe 
    "RENAME TABLE old_schema.$table TO old_schema.$table"; 
  done

mysqldump

mysqldump [OPTIONS] --database oldSchema > oldSchema.sql
mysql new_schema < oldSchema.sql

ein SQL-Kommando bauen

SET SESSION group_concat_max_len = 4294967295;

SELECT 
    CONCAT(
      'RENAME TABLE ', 
      GROUP_CONCAT( 
        table_schema,'.',table_name, ' TO ','new_schema.',table_name,' '
      ),
      ';'
    ) as stmt 
  FROM information_schema.TABLES 
  WHERE table_schema LIKE 'oldSchema' 
  GROUP BY table_schema;

Welche Alternative man jetzt nimmt, ist zum einen Geschmacksache und zum Anderen hängt es von der Datenbank ab, z.B. ist sie Groß, steht sie unter Dampf etc.