Hvis kolonnerne bruger standardtabeltegnsættet, er det kun én forespørgsel pr. tabel, der skal konverteres:
ALTER TABLE t CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Hvis tegnsættet er indstillet individuelt på hver kolonne, AFAIK, er der ingen måde at gøre det på alle kolonner i alle tabeller i databasen direkte i MySql, men du kan skrive et lillebitte program på dit valgfrit sprog, der gør det.
Dit program vil forespørge på INFORMATION_SCHEMA.COLUMNS
tabel og se på CHARACTER_SET_NAME
kolonne:
SELECT * FROM `INFORMATION_SCHEMA.COLUMNS`
WHERE TABLE_SCHEMA = 'dbname' AND CHARACTER_SET_NAME = 'latin1'
For hver resultatrække er det trivielt at syntetisere og udføre en ALTER TABLE
forespørgsel på stedet, der ændrer tegnsættet og sorteringen korrekt:
ALTER TABLE t MODIFY col TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
I ovenstående forespørgsel t
, col
og TEKST
ville være værdierne for TABLE_NAME
, COLUMN_NAME
og DATA_TYPE
kolonner fra INFORMATION_SCHEMA.COLUMNS
resultatsæt.