MySQL неверное значение Inger (кодировка) - PullRequest
0 голосов
/ 20 апреля 2011

Хорошо, вот моя делема. У меня есть файл .rpt, который закодирован в UCS-2 и в основном состоит из двух столбцов, разделенных ','.

Мой запрос:

load data infile 'file_name' into table

 table_name fields terminated by ',' 

lines terminated by '\n';

текст - это просто два столбца типа int. Я получаю сообщение об ошибке: Код ошибки: 1366 Неверное целочисленное значение: 'ÿþ1' для столбца 'column1' в строке 1

Я пытался создать таблицу с использованием параметров сортировки по умолчанию для usc-2, но проблема все та же. Я попытался преобразовать .rpt в разные кодировки, чтобы соответствовать таблице, но не повезло.

Спасибо

1 Ответ

1 голос
/ 20 апреля 2011

Загрузка данных в infile может вводить практически все, кроме UCS-2.

из http://dev.mysql.com/doc/refman/5.1/en/load-data.html

Примечание. Невозможно загрузить файлы данных, которые используют набор символов ucs2.

(на полпути вниз по странице)

Пример кода C для перевода ucs-2 в ascii

for( i=0; i!=len; ++i) {
  if( (ucs2[i]>=0) && (ucs2[i]<127)) {
    ascii[i] = ucs2[i];
  }
  else {
    conversion_failed();
    ascii[i] = '\0';
  }
}

Скрипт командной строки Linux

iconv -f UCS-2BE -t ascii oldfile > newfile

(не на 100% уверен, что правильное описание ввода - "UCS-2BE", возможно, есть некоторые отклонения. Пожалуйста, проверьте документацию iconv)

...