LINUX.ORG.RU

Перекодировка MySQL дампа


0

0

У меня есть трёхсотметровый дамп MySQL, который был по какой-то причине выгружен с путаницей в кодировках.

Я собираюсь отпарсить этот файл скриптом и автоматически поправить везде кодировки на CP1251, при необходимости перекодируя текст из UTF8.

Есть ли у меня шанс выполнить задуманное, или лучше даже и не пытаться, а разыскивать потерявшегося админа, который сделает мне более правильный дамп?


Имхо определить, где начинается и кончается битая кодировка - гиблое дело. Попробуй залить в тестовую БД и сделать дамп только из битых таблиц.

anonymous
()
Ответ на: комментарий от anonymous

Там всего 360 баз. У меня план распечатать из каждой из них по три строчки — сразу будет видно, что к чему.

Ritz
() автор топика
Ответ на: комментарий от true_admin

Раз уж он вынужден для изготовления правильного дампа искать админа, то бинарный вид БД ему точно недоступен. К тому же не все админят локалхост

saluki
()

Есть еще идея - разбить дамп на слова и проверить каждое слово на корректность кодировки. Перекодировать слово, если нужно. Вот только сколько времени займет...

anonymous
()
Ответ на: комментарий от anonymous

опередели последовательность преобразования кодировок что бы на выходе получалось то что нужно, перекодировать можно и с помощью `iconv -f что-то-там -t что-то-там`

oc
()
Ответ на: комментарий от oc

>опередели последовательность преобразования кодировок

Если весь дамп одинаково побитый, тогда проблем нет. Много хуже, когда часть данных «битая», а другая нормальная.

//Всегда ваш, С.О.

anonymous
()
Ответ на: комментарий от anonymous

> Много хуже, когда часть данных «битая», а другая нормальная

Случайно не поделишься как не специально добиться такого эффекта? Регулярно сталкиваюсь с дампами в битой кодировке, но побита она всегда в одном и том же направлении.

oc
()
Ответ на: комментарий от oc

Случайно не поделишься как не специально добиться такого эффекта?


0. Запускаешь mysql с дефолтными настройками
1. Создаешь БД и таблицы без явного указания кодировок
2. Год работаешь с такой базой, добавляя данные с кириллицей в latin1-поля
3. Создаешь новые таблицы с явным character set utf8 (например)
4. Работаешь дальше
5. Делаешь дамп
6. ??????
7. PROFIT!!!

Примерно так. Сталкивался не раз с такими горе-девелоперами.

Алсо раз такой разговор, может кто скажет, какого *** в XXI веке mysql не использует utf8 по-умолчанию?

//c:gauss chance

anonymous
()
Ответ на: комментарий от anonymous

Да, у меня так и есть. Часть таблиц нормальная, часть вообще без русских букв, а вот часть нужно перекодировать. К счастью, пока, вроде как, вопрос отложился на несколько дней: найдет злодей-админ.

Ritz
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.