Jeśli kolumny używają domyślnego zestawu znaków tabeli, konwertowane jest tylko jedno zapytanie na tabelę:
ALTER TABLE t CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Jeśli zestaw znaków jest ustawiony indywidualnie dla każdej kolumny, AFAIK nie ma możliwości zrobienia tego we wszystkich kolumnach wszystkich tabel w bazie danych bezpośrednio w MySql, ale możesz napisać mały program w wybranym języku, który to robi.
Twój program zapyta INFORMATION_SCHEMA.COLUMNS
tabeli i spójrz na CHARACTER_SET_NAME
kolumna:
SELECT * FROM `INFORMATION_SCHEMA.COLUMNS`
WHERE TABLE_SCHEMA = 'dbname' AND CHARACTER_SET_NAME = 'latin1'
Dla każdego wiersza wynikowego trywialne jest zsyntetyzowanie i wykonanie ALTER TABLE
zapytanie w miejscu, które odpowiednio zmienia zestaw znaków i sortowanie:
ALTER TABLE t MODIFY col TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
W powyższym zapytaniu t
, kol
i TEKST
byłyby wartościami TABLE_NAME
, COLUMN_NAME
i DATA_TYPE
kolumny z INFORMATION_SCHEMA.COLUMNS
zestaw wyników.