Пропускать строки ошибок при загрузке данных в таблицу mysql из файла с разделителями - PullRequest
5 голосов
/ 15 декабря 2011

Я загружаю данные из текстового файла в таблицу 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
----------
new users add here
----------
sri : vennla
----------
anu : bhavya
----------

Я должен загрузить, пропустив строку "новые пользователи добавляют сюда". Как это сделать?

Ответы [ 3 ]

2 голосов
/ 29 марта 2013

Ключевое слово, которое вы ищете: 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);
0 голосов
/ 04 июня 2014

Я обнаружил, что ЗАГРУЗИТЬ ДАННЫЙ ЛОКАЛЬНЫЙ ИНФИЛЬ «имя файла» ЗАМЕНИТЬ выйдет из строя после ошибки формата данных (недопустимая дата), но ЗАГРУЗИТЬ ДАННЫЙ ЛОКАЛЬНЫЙ ИНФИЛЬ «имя файла» а также ЗАГРУЗИТЬ ДАННЫЕ ЛОКАЛЬНЫЙ ИНФИЛЬ 'filename' IGNORE продолжение.

Насколько я могу судить, это противоречит документации MySql (версия 5.0).

0 голосов
/ 15 декабря 2011

Невозможно пропустить строки внутри данных, используя LOAD DATA INFILE.

Просто удалите запись позже, используя отдельный запрос.

DELETE FROM table WHERE column = "new users add here";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...