У меня есть файл, который может содержать от 3 до 4 столбцов числовых значений, разделенных запятой. Пустые поля определяются за исключением того, что они находятся в конце строки:
1,2,3,4,5
1,2,3,,5
1,2,3
В MySQL была создана следующая таблица:
+-------+--------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------+------+-----+---------+-------+
| one | int(1) | YES | | NULL | |
| two | int(1) | YES | | NULL | |
| three | int(1) | YES | | NULL | |
| four | int(1) | YES | | NULL | |
| five | int(1) | YES | | NULL | |
+-------+--------+------+-----+---------+-------+
Я пытаюсь загрузить данные с помощью команды MySQL LOAD:
LOAD DATA INFILE '/tmp/testdata.txt' INTO TABLE moo FIELDS
TERMINATED BY "," LINES TERMINATED BY "\n";
Полученная таблица:
+------+------+-------+------+------+
| one | two | three | four | five |
+------+------+-------+------+------+
| 1 | 2 | 3 | 4 | 5 |
| 1 | 2 | 3 | 0 | 5 |
| 1 | 2 | 3 | NULL | NULL |
+------+------+-------+------+------+
Проблема заключается в том, что когда поле в необработанных данных пустое и не определено, MySQL по какой-то причине не использует значение по умолчанию для столбцов (которое равно NULL) и использует ноль. NULL используется правильно, когда поле полностью отсутствует.
К сожалению, я должен уметь различать NULL и 0 на этом этапе, поэтому любая помощь будет оценена.
Спасибо
S.
редактировать
Вывод ШОУ ПРЕДУПРЕЖДЕНИЙ:
+---------+------+--------------------------------------------------------+
| Level | Code | Message |
+---------+------+--------------------------------------------------------+
| Warning | 1366 | Incorrect integer value: '' for column 'four' at row 2 |
| Warning | 1261 | Row 3 doesn't contain data for all columns |
| Warning | 1261 | Row 3 doesn't contain data for all columns |
+---------+------+--------------------------------------------------------+