Кодировка для LOAD DATA INFILE
Чтобы указать кодировку, которую использует MySQL-операция LOAD DATA INFILE для загрузки сразу всего файла в таблицу, перед ним выполните запрос с указанием нужной кодировки, например для русского языка:
SET character_set_database = cp1251;
Именно это переменная отвечает за правильный парсинг. Вероятно, эту переменную нужно возвращать в исходное значение после LOAD DATA INFILE, но вроде работает и без этого...
Для пользовательского интерфейса выбора кодировки проще всего не придумывать с потолка список оных, а запросить саму базу, какие же кодировки она сможет использовать:
SHOW CHARACTER SET;
Опыт показывает, что на разных серверах даже при одной версии мускула количество кодировок сильно разнится. Более того, иногда пропадает описание кодировки (просто пустой столбец). Полученный рекордсет удобно распарсивается и предлагается пользователю в виде списка. Выбранное значение используется в первом запросе.
0 комментов:
Отправить комментарий