Dem_anywhere, 18.02.2004 20:33:19 :
из того, что он по --help выдаёт (4.0.15)
-w, --where=name Dump only selected records; QUOTES mandatory!
Да, точно.
>А экспортнуть нужный кусок в файл и натравить на него перекодировщик в utf8?
>а потом закачать назад
Я так и пытался позавчера делать. Если интересна поднаготная проблемы, то дело обстоит так:
1. Сделал mysqldump старой базы.
2. Перегнал дамп в UTF8.
3. Втянул его назад, убедившись, что всё ок (исключая, понятно, сортировку, поиск и т.п.).
4. Обновил MySQL (напомню, что 4.0.x не поддерживает UTF8).
5. После обновления натравил, в строгом соответствии с инструкцией myisamchk с параметром применения кодировки UTF8 и т.п.
Вроде, всё было ок. MySQL компилил с ключом кодовой таблицы UTF8.
Уже после того выяснилось, что MySQL всё равно пашет в cp1251.
Прописал принудительно в конфиге.
После этого он стал отдавать инфу в cp1251. Это те минут 40 "квадратиков", что 16-го с ~18:00 до 18:40 были. Когда заметил, когда разобрался - вернул назад.
Выяснилось вот что. База, сидящая в нём физически записана в UTF8. Но считает он, что она в cp1251. Если у него и просят 1251, то он отдаёт как есть. Всё работает (сейчас). Если ему сказать, что он в UTF8, он начинает свою базу преобразовывать как бы из 1251 в UTF8! Т.е. получается двойное преобразование.
Прошлой (т.е. с 16-го на 17-е) ночью пытался провести такой финт. Сбросить базу, поменять вручную все упоминания кодировки cp1251 на utf8 и втянуть обратно. Долго не мог понять чем сконвертить. В конце концов сделал это Perl-скриптом.
Всё хорошо, но при втягивании такого файла у него сперва начинается ругань на то, что "максимальная длина ключа 500 байт" (как выяснилость, возникает при объявлении VARCHAR(167) и больше. А в базе полно VARCHAR(255)). Ещё много возни. Исправление всех таких VARCHAR с 255 на 167. Принимает, но падает при втягивании дампа. Каждый раз на одном месте для одного дампа. При чём часто - на небольших вставках, скажем, по 1кБ.
Даже отдельно мучал, отдельно структуру, отдельно - данные.
Последнее, до чего додумался - это написать тяжеловесный PHP-скрипт, который вырезает SQL-запросы из дампа и по одному их скармливает базе. Но в ту ночь уже прогнать до конца его не успел (очень медленно, долго файл разбирать приходится). Так что вернул дамп, сброшенный до этих извращений и пошёл спать.
В прошлую ночь - отсыпался.
В эту - попробую снова помучать
Кстати, уже позже, сегодня, кажется, допёр почему осыпались голосования. Они хранятся в базе в виде serialize (кто ж так додумался!) и поэтому при конвертациях там всё поехало. После того, как базу с нормальными кодировками настрою, придётся их вручную из старой базы восстанавливать.