MySQL "LOAD DATA INFILE" и Missing Double Quotes
Я пытаюсь загрузить CSV в MySQL, используя технику LOAD DATA INFILE. Он работает нормально, но у меня есть проблема, когда некоторые столбцы используют двойные кавычки, а некоторые нет.
Пример:
something,123,something,"Bauer, Jack",123,something
Что происходит, запятые внутри кавычек ломают импорт, поэтому мои данные все подхватываются в конце. Не уверен, как получить импорт, чтобы избежать запятых внутри двойных кавычек.
mysql --user=<USER> --password=<PASS> -e "LOAD DATA INFILE '<FILENAME>' INTO TABLE <TABLENAME> FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' (col1, col2, col3, ...)" <DATABASE>
Ответы
Ответ 1
Вам нужно выполнить инструкцию LOAD DATA INFILE с дополнительной опцией
FIELDS OPTIONALLY ENCLOSED BY '"'
Таким образом, все утверждение становится
LOAD DATA INFILE '<FILENAME>' INTO TABLE <TABLENAME>
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
(col1, col2, col3, ...)
Для дальнейших чтений обратитесь к отличному справочному руководству MySQL. для MySQL 5.1 GA.
Ответ 2
Надеюсь, вы догадались, что делать до сих пор, но если вы не надеетесь, это поможет вам.
У меня возникли проблемы с экспортом Excel 2007 в настраиваемый CSV файл. Я обнаружил, что вы можете изменить терминатор полей здесь: http://www.tek-tips.com/viewthread.cfm?qid=1635599&page=15
Я предпочитаю использовать трубку | характер, так как он необычен, и немного более гибкий при работе с измерениями дюйма дюймов, ногами.