MariaDB Загрузка данных Infile - Не удается прочитать последнюю строку - PullRequest
0 голосов
/ 05 мая 2018

Последняя строка моего CSV читает

58,5/3/17,8:30 PM,Jazz L6/7,0,,Thursday,1074,black,

Последняя запятая есть, потому что в последнем поле ничего нет. Но нет возврата каретки после последней строки.

Но я получаю ошибку "row 59 doesn't contain data for all columns"

Так что, если я пойду и поменяю последнюю строку на:

58,5/3/18,8:30 PM,Jazz L6/7,0,,Thursday,1074,black,test

ИЛИ Я должен поставить возврат каретки ... Это сработает.

Вот мой PHP-код, который генерирует запрос:

    $query = <<<eof
        TRUNCATE TABLE `eventstmp`;
        LOAD DATA INFILE '$target'
        INTO TABLE `eventstmp`
        FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
        LINES TERMINATED BY '\n'
        (EventCode,EventDate,GameTime,TeamName1,Versus, TeamName2, AgeGroup, Photographer, TextDescription, Location);
        delete from `eventstmp` limit 1;
        update `eventstmp` set `EventCode`=lpad(`EventCode`,3,'0');
        update `eventstmp` set `Import`=0 where exists(select 1 from `events` join `vwactiveevent` on '$MainEventID'=`events`.`MainEventID` where `events`.`Eve
ntCode`=`eventstmp`.`EventCode`);
eof;

Я пробовал это на двух разных базах данных, которые должны быть одинаковыми. Похоже, что описание таблицы eventstmp в каждой базе данных одинаково. Режим SQL каждой базы данных также одинаков. Я не уверен, что мне не хватает.

Я пытался изменить 'LINES TERMINATED BY' from \n to \r\n. Я также пытался убежать от \, так что это будет: LINES TERMINATED BY '\\n'

Не уверен, что еще попробовать

...