Пропускать строки ошибок при загрузке данных в таблицу mysql из файла с разделителями
Я загружаю данные из текстового файла в таблицу MySQL, используя следующий запрос:
LOAD DATA INFILE "myFile.csv"
INTO TABLE some_table
COLUMNS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n' (admin,consumer);
Но когда мой файл содержит несколько строк ошибок, он не может пропустить эту строку, и весь процесс останавливается в этом месте. Я имею в виду, если мой формат файла, как:
---------- sankr: kumar ---------- ramesh: rao ---------- новые пользователи добавляют сюда ---------- Шри: Веннла ---------- Ану: Бхавья ----------
Я должен загрузить, пропустив строку "новых пользователей добавить сюда". Как это сделать?
3 ответа
Ключевое слово, которое вы ищете IGNORE
,
Как в:
LOAD DATA INFILE "myFile.csv" IGNORE
INTO TABLE some_table
COLUMNS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n' (admin,consumer);
Я обнаружил, что LOAD DATA LOCAL INFILE 'filename' REPLACE завершит работу после ошибки формата данных (недопустимая дата), но LOAD DATA LOCAL INFILE 'filename' и LOAD DATA LOCAL INFILE 'filename' IGNORE продолжились.
Насколько я могу судить, это противоречит документации MySql (версия 5.0).
Невозможно пропустить строки внутри данных, используя LOAD DATA INFILE
,
Просто удалите запись позже, используя отдельный запрос.
DELETE FROM table WHERE column = "new users add here";