30 января 2010 г.

Конвертация базы данных MySQL из одной кодировки в другую

Начальным условием является наличие базы MySQL в кодировке latin1 данные из которой криво отображаются при просмотре, такая ситуация, например, возникает при установке Mantis. Кодировка как правило обнаруживается не сразу, но т.к. в базе данных уже есть данные, то выход один - конвертировать. Базу требуется переконвертировать в UTF8 дабы решить вопрос с отображением.
  • Создаём бэкап вашей базы выполняя команду: mysqldump -uUSER -Pport -hHOST -pPASSWORD > dump_name.sql
  • Открываем, в моём случае Microsoft Office Word 2003
  • Открываем в Word'е дамп базы, т.е. dump_name.sql
  • Word предлгает выполнить преобразование открываемого файла из формата «Кодированный текст»
  • По умолчанию Word предлагает выбрать кодировку Другая -> UTF8. Как правило дамп базы создаётся в кодировке UTF8 в независимости от кодировки данных.
  • Соглашаемся
  • Документ открылся и мы видим «кракозябру» в тех местах где должны быть кириллические символы
  • Переходим в пункт меню Сервис и далее Исправить повреждённый текст...
  • В исправленном тексте заменяем все «latin1» на UTF8
  • Сохраняем исправленный документ
  • Создаём базу выполнив скрипт: CREATE DATABASE `bd_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 
  • Заливаем наш исправленный дамп в базу выполнением команды: mysql -uUSER -Pport -hHOST -pPASSWORD bd_name < dump_name.sql
Наслаждаемся!

В случае если вам требовалось конвертировать базу из latin1 в cp1251, то соответственно необходимо выполнять шаги с заменой UTF8 на ср1251.

Комментариев нет:

Отправить комментарий