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ů.