Ако колоните използват набора от символи на таблицата по подразбиране, тогава е само една заявка на таблица за преобразуване:
ALTER TABLE t CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Ако наборът от знаци е зададен индивидуално за всяка колона, AFAIK няма начин да направите това за всички колони на всички таблици в базата данни директно в MySql, но можете да напишете малка програма на избран от вас език, която го прави.
Вашата програма ще поиска INFORMATION_SCHEMA.COLUMNSкод>
таблица и погледнете CHARACTER_SET_NAME
колона:
SELECT * FROM `INFORMATION_SCHEMA.COLUMNS`
WHERE TABLE_SCHEMA = 'dbname' AND CHARACTER_SET_NAME = 'latin1'
За всеки ред с резултати е тривиално да се синтезира и изпълни ALTER TABLE
заявка на място, която променя набора от знаци и съпоставянето по подходящ начин:
ALTER TABLE t MODIFY col TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
В горната заявка t
, col
и TEXT
ще бъдат стойностите на TABLE_NAME
, COLUMN_NAME
и DATA_TYPE
колони от INFORMATION_SCHEMA.COLUMNS
набор от резултати.