19 августа 2006

Кодировка для LOAD DATA INFILE

Чтобы указать кодировку, которую использует MySQL-операция LOAD DATA INFILE для загрузки сразу всего файла в таблицу, перед ним выполните запрос с указанием нужной кодировки, например для русского языка:

SET character_set_database = cp1251;

Именно это переменная отвечает за правильный парсинг. Вероятно, эту переменную нужно возвращать в исходное значение после LOAD DATA INFILE, но вроде работает и без этого...


Для пользовательского интерфейса выбора кодировки проще всего не придумывать с потолка список оных, а запросить саму базу, какие же кодировки она сможет использовать:

SHOW CHARACTER SET;

Опыт показывает, что на разных серверах даже при одной версии мускула количество кодировок сильно разнится. Более того, иногда пропадает описание кодировки (просто пустой столбец). Полученный рекордсет удобно распарсивается и предлагается пользователю в виде списка. Выбранное значение используется в первом запросе.

0 комментов:

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