2015-07-21 6 views
4

Я пытаюсь загрузить данные, хранящиеся в текстовых файлах UTF-8, и у меня есть две проблемы. Во-первых, в настоящее время в этой таблице нет первичного ключа, и в данный момент он не установлен на автоматическое увеличение или вынужден быть нулевым; первый столбец будет предназначенным первичным ключом после загрузки всех данных, а внешние ключи будут добавлены в этот момент.Получение ошибки "1366 Неправильное целочисленное значение: '1'" при импорте файла

я получил следующее сообщение об ошибке:

25 row(s) affected, 1 warning(s): 1366 Incorrect integer value: '1' for column 'idtable_file' at row 1 Records: 25 Deleted: 0 Skipped: 0 Warnings: 1

при попытке запустить этот:

LOAD DATA LOCAL INFILE '/path' INTO TABLE sandr.table_file 
columns terminated by ',' 
LINES terminated by '\n' 
(idtable_file, owner_id, folder_id, @modified_date, @created_date, size, filename) 
SET modified_date = STR_TO_DATE(@modified_date,'%d/%m/%Y %T'), 
    created_date = STR_TO_DATE(@created_date,'%d/%m/%Y %T') 

на этой таблице:

CREATE TABLE `table_file` (
    `idtable_file` int(11) DEFAULT NULL, 
    `owner_id` int(11) DEFAULT NULL, 
    `folder_id` int(11) DEFAULT NULL, 
    `modified_date` datetime DEFAULT NULL, 
    `created_date` datetime DEFAULT NULL, 
    `size` int(11) DEFAULT NULL, 
    `filename` varchar(255) DEFAULT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 

я делаю что-то неправильно, но я вы только что начали с MySQL, так что я вздрагиваю в темноте, честно, любые идеи по этому поводу? Кроме того, хотя выше SQL-запрос отлично работает в PowerShell, когда это просто так:

LOAD DATA LOCAL INFILE '/path' INTO TABLE sandr.table_file 
columns terminated by ',' 
LINES terminated by '\n' 

Это бомбы с:

Exception calling "ExecuteNonQuery" with "0" argument(s): "Fatal error encountered during command execution."

если я добавляю корректировку полей даты.

ответ

4

25 row(s) affected, 1 warning(s): 1366 Incorrect integer value: '1' for column 'idtable_file' at row 1 Records: 25 Deleted: 0 Skipped: 0 Warnings: 1

Я также столкнулся с этой ошибкой. Дело в том, чтобы отметить, что

  • ошибка явно абсурдные (это, кажется, сказать, что «1», который представляет собой целое число, неправильное целое значение), и
  • это происходит на в очень первая колонка самого первого ряда и только там.

Если эти два условия выполнены, то по всей вероятности, виновником является скрытой последовательности три байта, который находится прямо в начале файла SQL, который вы пытаетесь загрузить (это называется UTF8 Byte-Order Mark).

В некоторых случаях последовательность выводится в сообщение об ошибке и отображается распознано, например in this bug report. В других случаях он отправляется пользователю в качестве части значения:

Incorrect integer value: '###1' ... 

но терминал «съедает» спецификации и то, что вы видите (теперь абсурдные) Ошибка

Incorrect integer value: '1' ... 

Для решения проблема, вам нужно открыть файл, который нужно импортировать в какой-либо редактор, способный удалить отметку порядка байтов (например, Notepad ++).

+2

Блестящий! Вы сэр, это спецификация! Я повторно сохранил файл как UTF-8 без спецификации, а Боб был очень моим дядей. Вы только что спасли мне большое количество потраченного впустую времени вручную, установив все 200 + начальные строки, которые появлялись бы в таблице, Шляпы от вас :-) – Neil

+0

Мне просто нужно выяснить, что заставляет PowerShell бросать исключение, и это недельная работа с моей стороны в значительной степени выполнена. Не могли бы вы предложить мне поднять это как отдельный вопрос? – Neil

+0

Завтра я проверю это, здесь довольно поздно, а также 39 градусов по Цельсию :-) ... но я * проверю его. – LSerni

Смежные вопросы