MySQL – конвертация базы данных из windows-1251/cp1251 в UTF-8

MySQL – конвертация базы данных из windows-1251/cp1251 в UTF-8

Постер - MySQL – конвертация базы данных из windows-1251/cp1251 в UTF-8

Работая с сайтами, в особенности старыми часто приходиться конвертировать существующие базы данных из одной кодировки windows-1251/cp1251 в UTF-8. Одним из самых простых и быстрых способов является использование SQL-запроса.

SQL-запрос для конвертирования кодировки таблицы в utf8_general_ci:

ALTER TABLE `db_name`.`table_name` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
  • db_name — имя базы данных
  • table_name — название таблицы

При помощи этого запроса, можно конвертировать таблицу базы данных в любую, доступную в MySQL кодировку заменив utf8 и utf8_general_ci на нужную в вашем случае кодировку. Но таблиц в базе данных зачастую не одна и не две, а зачастую десятки или сотни. Как же быть если все таблицы необходимо перекодировать в UTF-8 из windows-1251/cp1251? Можно отправить MySQL запрос, который сгенерирует необходимые SQL-запросы (по типу такого как мы расмотрели выше) для всех таблиц БД.

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` = 'db_name'
ORDER BY 1
LIMIT 0 , 90

Этот запрос будет работать в MySQL начиная с 5-й  версии выше.

Читайте также  Где лежат конфигурационные файлы к PHP, MySQL, Nginx, Apache, XCache, IPTables в CentOS

Сохрани, чтобы не потерять