Как пропустить вставку строки при возникновении ошибки или предупреждения при использовании команды LOAD DATA INFILE mysql?
Я создал таблицу с помощью приведенной ниже команды в mysql
CREATE TABLE `student` (
`id` int(11) NOT NULL,
`name` varchar(50) DEFAULT NULL,
`dob` date NOT NULL,
`email` varchar(100) DEFAULT NULL,
`timing` datetime NOT NULL DEFAULT '2018-04-09 16:36:43',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
У меня есть CSV-файл, как показано ниже
id, name, dob, email, timing
1, giri, 2013-10-22, a@g.com, asdljadf
2, alex, 2012-08-30, a@f.com
abc, yasir, 2013-10-22, b@c.com, 2012-08-30 12:47:04
def, karan, 2012-08-30, c@d.com, 2012-08-30 12:47:04
LOAD DATA LOCAL INFILE '/home/giri/Desktop/student_201910031118.csv' IGNORE INTO TABLE giri.student FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY ''LINES TERMINATED BY '\n' IGNORE 1 ROWS;
После выполнения вышеупомянутой команды sql ниже приведено содержимое таблицы ученика,
id name dob email timing
0 yasir 2013-10-22 b@c.com 2012-08-30 12:47:04
1 giri 2013-10-22 a@g.com [null]
2 alex 2012-08-30 a@f.com [null]
- «синхронизация»Столбец первой строки, хотя он не имеет нулевого ограничения, он вставляется как нулевой с предупреждающим сообщением.
- 2-я строка столбца csv не имеет значения для столбца «хронометраж», но вставляется какnull вместо значения по умолчанию.
- 3-я строка имеет недопустимое значение для столбца "id", но mysql автоматически преобразует значение в "0" и вставляет строку с предупреждением.
- 4-я строка также имеетнедопустимое значение для столбца «id», так же как и выше, оно преобразует значение в «0», поскольку столбец «id» является первичным ключом, в котором отображается предупреждение в виде повторяющейся записи.
Ниже приведено предупреждениесообщение.
+---------+------+---------------------------------------------------------+
| Level | Code | Message |
+---------+------+---------------------------------------------------------+
| Warning | 1265 | Data truncated for column 'timing' at row 1 |
| Warning | 1261 | Row 2 doesn't contain data for all columns |
| Warning | 1366 | Incorrect integer value: 'abc' for column 'id' at row 3 |
| Warning | 1366 | Incorrect integer value: 'def' for column 'id' at row 4 |
| Warning | 1062 | Duplicate entry '0' for key 'PRIMARY' |
+---------+------+---------------------------------------------------------+
Мне нужно пропустить строку, когда произошла ошибка или предупреждение, как это сделать?