Pokud sloupce používají výchozí znakovou sadu tabulky, převede se pouze jeden dotaz na tabulku:
ALTER TABLE t CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Pokud je znaková sada nastavena individuálně pro každý sloupec, AFAIK neexistuje způsob, jak to udělat ve všech sloupcích všech tabulek v databázi přímo v MySql, ale můžete napsat malý program ve vašem jazyce, který to udělá.
Váš program by se zeptal na INFORMATION_SCHEMA.COLUMNS
a podívejte se na CHARACTER_SET_NAME sloupec:
SELECT * FROM `INFORMATION_SCHEMA.COLUMNS`
WHERE TABLE_SCHEMA = 'dbname' AND CHARACTER_SET_NAME = 'latin1'
Pro každý řádek výsledků je triviální syntetizovat a spustit ALTER TABLE dotaz na místě, který vhodně změní znakovou sadu a řazení:
ALTER TABLE t MODIFY col TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Ve výše uvedeném dotazu t , col a TEXT by byly hodnoty TABLE_NAME , COLUMN_NAME a DATA_TYPE sloupce z INFORMATION_SCHEMA.COLUMNS sada výsledků.