Пропускать строки ошибок при загрузке данных в таблицу 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";
Другие вопросы по тегам