Mysql
 sql >> Database >  >> RDS >> Mysql

Come convertire tutte le tabelle nel database in un confronto?

È necessario eseguire un'istruzione alter table per ogni tabella. La dichiarazione seguirebbe questa forma:

ALTER TABLE tbl_name
[[DEFAULT] CHARACTER SET charset_name]
[COLLATE collation_name]

Ora per ottenere tutte le tabelle nel database dovresti eseguire la seguente query:

SELECT * 
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA="YourDataBaseName"
AND TABLE_TYPE="BASE TABLE";

Quindi ora lascia che MySQL scriva il codice per te:

SELECT CONCAT("ALTER TABLE ", TABLE_SCHEMA, '.', TABLE_NAME," COLLATE your_collation_name_here;") AS    ExecuteTheString
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA="YourDatabaseName"
AND TABLE_TYPE="BASE TABLE";

Puoi copiare i risultati ed eseguirli. Non ho testato la sintassi ma dovresti essere in grado di capire il resto. Consideralo come un piccolo esercizio.

Spero che ti aiuti!