Конвертация базы данных MySQL из Win-1251 в UTF-8

Конвертация базы данных MySQL из Win-1251 в UTF-8
Часто случается, что необходимо выполнить конвертацию существующей базы из одной кодировки в другую. Нам чаще всего приходится конвертировать из Win-1251 в UTF-8. Это можно произвести разными способами, но самый быстрый и простой — использование SQL-запроса.
Запрос конвертирования кодировки:
ALTER TABLE `db_name`.`table_name` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

При помощи этого запроса, можно конвертировать таблицу базы данных в любую, доступную в MySQL кодировку. Но что делать, если таблиц 100, 200 или больше, и все таблицы необходимо перекодировать в UTF8 из Win-1251? Для решения этой проблемы, можно отправить в MySQL запрос, который сгенерирует необходимые SQL-запросы для всех таблиц БД.
При использовании, например, PHPMyAdmin останется только скопировать результаты и запустить их как SQL-запрос:
 
SELECT CONCAT(  'ALTER TABLE `', t.`TABLE_SCHEMA` ,  '`.`', t.`TABLE_NAME` ,  '` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;' ) AS sqlcode
FROM  `information_schema`.`TABLES` t
WHERE 1 
AND t.`TABLE_SCHEMA` =  'My_DB_for_convert'
ORDER BY 1 
LIMIT 0 , 90
 

Этот запрос будет работать в MySQL версии 5 и выше. My_DB_for_convert — следует заменить на имя БД, таблицы в которой необходимо конвертировать в UTF-8.
utf8_general_ci или utf8_unicode_ci
utf8_general_ci и utf8_unicode_ci отличаются только скоростью работы и порядком сортировки. Поскольку utf8_general_ci работает быстрее — это и есть предпочтительный выбор. В случаее необходимости, способом описанным выше, можно будет изменить подкодировку UTF8 c utf8_general_ci на utf8_unicode_ci.
23:16
RSS
Нет комментариев. Ваш будет первым!
Загрузка...