28.01.2008

Сконвертировать MySQL базу из cp1251 в utf8

Вобщем на фильмах и мыслях далеко не уедешь. И, честно говоря, подсмотрел в одном блоге очень удачную мысль - писать в свой блог то, что сам не смог сделать без гугления и геморроя.

Начнем с простой задачи - есть mysql база в cp1251. Но прогресс идет - надо сконвертировать её в юникод, чтобы больше уже никогда не париться с кодировками (разве что в IE).

Идея просто - делаем дамп базы в текстовый файл, конвертируем этот файл и заливаем обратно уже в юникодную базу.
  1. Делаем дамп. Тут обязательность имени пользователя и пароля зависит от настроек
    mysqldump --opt -u имя_пользователя -pпароль название_базы > dump.sql


  2. Теперь ковертируем наш дамп в юникод
    iconv -f cp1251 -t utf8 dump.sql > dump-utf8.sql


  3. Создаем временную базу, чтобы проверить - всё ли впорядке
    CREATE DATABASE название_базы_utf CHARACTER SET utf8 COLLATE utf8_general_ci;


  4. Импортируем наш дамп во временную базу
    mysql -u имя_пользователя -pпароль --default-character-set=utf8 название_базы_utf < dump-utf8.sql
  5. Смотрим - все ли нормально импортировалось, если да - подчищаем мусор, удаляем обе базы:
    DROP DATABASE название_базы; DROP DATABASE название_базы_utf;

  6. Создаем нашу базу
    CREATE DATABASE название_базы CHARACTER SET utf8 COLLATE utf8_general_ci;

  7. Импортируем чистовик
    mysql -u имя_пользователя -pпароль --default-character-set=utf8 название_базы < dump-utf8.sql
Вот и все. Ну если кто не понял - команды жирным шрифтом выполням в bash, а курсивом - в mysql консоли.

Ну и работает это только если в базе в BLOB-ах не хранится текст в cp1251. Он естественно в utf не перекодируется.

4 комментария:

Анонимный комментирует...

предлогаю переименоваться в "впечатления и гемморой"

Анонимный комментирует...

Гемморой - это пидорская цп1251, которую вместе с её создателями надо жечь напалмом!

Анонимный комментирует...

Какой же ты умный.. Вот придумал бы ютф да внедрил..

Анонимный комментирует...

Все намного сложнее, читайте тут: http://mysterria.com/article/konvertiruem-proekt-iz-cp1251-v-utf-8

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