Конвертирование базы данных MySQL из одного charset в другой
Быстрый способ преобразования charset базы данных MySQL
Недавно мне пришлось столкнуться с задачей перевода базы данных из одного charset в другой. Исходная база была в iso-8859-1, предстояло перевести её в utf-8. Задача усложнялась тем, что в исходной базе присутствовали символы из других языков (русский, испанский и, возможно, китайский). Погуляв по Интернету и поискав в Google, я нашёл несколько решений. Способ, который мне [...]
← Вернуться к полной версии записи «Конвертирование базы данных MySQL из одного charset в другой»…
Автор: Vladimir; опубликовано в: MySQL; метки: convert, MySQL, utf8, база данных, преобразованиеМар
2008
Комментарии к статье «Конвертирование базы данных MySQL из одного charset в другой» (6) »
Пожалуйста, не используйте эту форму для комментирования! Данная форма предназначена исключительно для ботов.
Оставить комментарий к записи «Конвертирование базы данных MySQL из одного charset в другой»
गते गते पारगते पारसंगते बोधि स्वाहा
Меня зовут Владимир, я программист-фрилансер, специализирующийся на Web-программировании и програмировании под Linux.
По совместительству занимаюсь администрированием LAMP/LNMP-серверов и техническим переводом.


В меморис!
Вот спасибо тебе мил человек. Очень пригодилась твоя “заметка”.
Пиши еще!
Метод из документации будет работать ТОЛЬКО есть данные в базе лежат в той же кодировке, которая объявлена для поля БД.
Старые версии Вордпресса хранят данные в кодировке UTF8 в таблицах с кодировкой latin1 (при обновлении версии даже запрещается добавлять в старый конфиг константы CHARSET и COLLATION, как в новых версиях).
Поэтому простой ALTER .. CONVERT не будет работать (он преобразует двухбайтовые символы в два разных символа). В этом случае сработает только конвертирование с использованием BLOB (2 пункт). При этом данные представляются просто как битовый поток, а потом к ним применяется перекодирование в UTF. А так как они до этого были записаны в UTF, то все закончится удачно. (К стати есть для этого скрипт, который находит текстовые поля и конвертирует их через BLOB в UTF, да и самому такой написать не большая проблема). Iconv по идее тоже не сработает (будет то же самое, как с CONVERT), но я не проверял…
Alex, на самом деле вариантов здесь гораздо больше: всё зависит от charset’а базы, таблицы и соединения.
Моя ошибка в том, что я описывал решение под свой конкретный случай, но не указал, какой из восьми возможных случаев был моим.
Сейчас я пишу подробный обзор на эту тему.
первый способ прокатил, но без шага с iconv и без ALTER DATABASE `database_utf8` COLLATE ‘utf8_general_ci’
в любом случае, спасибо за подсказку.
Спасибо, коллега! Крайне помогло.
У меня конвертирование было с осложнениями. База в latin1, а содержимое таблиц в cp1251!
недавно тоже столкнулся с проблемой конвертации базы. оказалось всё не так радужно. Для простых таблиц это проходит, а если в базе храняться сериализированные данные – то такой подход неприемлем.