Конвертируем базу MySQL из cp1251 в UTF-8

Как быстро сконвертировать свою базу данных из кодировки cp1251 в utf8. Зачем это надо? А затем, что кодировка utf8 имеет большую гибкость по сравнению с cp1251.

Итак...
1. Создаем дамп базы MySQL в cp1251 коммандой:
mysqldump --opt -u имя_пользователя -pпароль имяБД > cp1251dump.sql

2. Конвертируем полученный дамп в utf8:
iconv -f cp1251 -t utf8 cp1251dump.sql > utf8dump.sql

3. Очищаем нащу базу данных. Для этого выполняем запросы:
DROP DATABASE имяБД;
CREATE DATABASE имяБД CHARACTER SET utf8 COLLATE utf8_general_ci;

4. Импортируем в базу наш сконвертированный в utf8 дамп:
mysql -u имя_пользователя -pпароль --default-character-set=utf8 имяБД < utf8dump.sql

5. Радуемся :D

Зы: спасибо товарищу Pilot34

Поблагодарить автора

6 Responses to Конвертируем базу MySQL из cp1251 в UTF-8

  1. Кстати это работает только если в базе в BLOB-ах не хранится текст

  2. Действительно.

    Но имхо хранить в BLOB'е текст будет только извращенец.

  3. Есть дамп cp1251dump.sql, нет доступа к консоли. Пожалуйста, выдайте решение ввиде PHP скрипта.

  4. Без проблем:

    <?

    $text = file_get_contents («cp1251dump.sql»);

    $text = iconv («cp1251», «UTF-8», $text);

    $f = fopen («utf8dump.sql»,"w");

    fwrite ($txt,$f);

    fclose ($f);

    ?>

  5. Естественно

    файл:

    iconv -f utf8 -t cp1251 utf8dump.sql > cp1251dump.sql

    база данных:

    DROP DATABASE имяБД;

    CREATE DATABASE имяБД CHARACTER SET cp1251 COLLATE cp1251_general_ci;

    импорт:

    mysql -u имя_пользователя -pпароль --default-character-set=cp1251 имяБД < utf8dump.sql

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

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>