Rinominare le tabelle di mySQL

Rinominare tutte le tabelle di un DB mySQL con un prefisso è utile in molte occasioni. Un modo è il seguente.

Il comando

SELECT Concat('RENAME TABLE ', TABLE_NAME, ' TO my_prefix_', TABLE_NAME, ';') FROM information_schema.tables WHERE table_schema = 'my_database'

dove my_prefix_ è il prefisso e my_database è il nome del DB

costruisce il comando RENAME TABLE vecchio_nome TO nuovo_nome per ogni tabella presente nel database

Ci si ritrova con un elenco tipo questo (sono tabelle di un db di Drupal)

RENAME TABLE rules_rules TO nuovo_rules_rules;
RENAME TABLE rules_sets TO nuovo_rules_sets;
RENAME TABLE search_dataset TO nuovo_search_dataset;
RENAME TABLE search_index TO nuovo_search_index;
RENAME TABLE search_node_links TO nuovo_search_node_links;
RENAME TABLE search_total TO nuovo_search_total;
RENAME TABLE security_review TO nuovo_security_review;
RENAME TABLE semaphore TO nuovo_semaphore;
RENAME TABLE sessions TO nuovo_sessions;
RENAME TABLE simplereservation_item TO nuovo_simplereservation_item;
RENAME TABLE simplereservation_reservation TO nuovo_simplereservation_reservation;    
RENAME TABLE system TO nuovo_system;
RENAME TABLE term_data TO nuovo_term_data;

A questo punto non resta che copiare le righe restituite ed usarle come comando SQL per rinominare le tabelle.

Ovviamente le stessa tecnica è utilizzabile per fare manipolazioni dei nomi dei database, non solo per aggiungere un prefisso.

 

Forums: