Om kolumnerna använder standardtabellteckenuppsättningen är det bara en fråga per tabell att konvertera:
ALTER TABLE t CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Om teckenuppsättningen är individuellt inställd på varje kolumn, AFAIK finns det inget sätt att göra det på alla kolumner i alla tabeller i databasen direkt i MySql, men du kan skriva ett litet program på ditt valfria språk som gör det.
Ditt program skulle fråga efter INFORMATION_SCHEMA.COLUMNS
tabellen och titta på CHARACTER_SET_NAME
kolumn:
SELECT * FROM `INFORMATION_SCHEMA.COLUMNS`
WHERE TABLE_SCHEMA = 'dbname' AND CHARACTER_SET_NAME = 'latin1'
För varje resultatrad är det trivialt att syntetisera och köra en ALTER TABLE
fråga på plats som ändrar teckenuppsättningen och sorteringen på lämpligt sätt:
ALTER TABLE t MODIFY col TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
I ovanstående fråga t
, col
och TEXT
skulle vara värdena för TABLE_NAME
, COLUMN_NAME
och DATA_TYPE
kolumner från INFORMATION_SCHEMA.COLUMNS
resultatuppsättning.