Загрузите файл в таблицу MySQL с правильной escape

0

Я намерен загрузить файл (структура, как показано ниже) в таблицу mysql.

"id","name","city","occupation"
"1","ami","Puchong","Engineer"
"2","sandy","Puchong (Equine Park)","Teacher"
"3","sam","Puchong "Puncak Jalil"","Doctor"

и ожидая получить структуру таблицы, как следует

|id|name|city|occupation|
|1|ami|Puchong|Engineer|
|2|sandy|Puchong (Equine Park)|Teacher|
|3|sam|Puchong "Puncak Jalil"|Doctor|

Я загружаю файл, используя следующую команду:

загрузить данные infile '/home/kimi/my.txt' в тестовые поля таблицы, завершенные символом ',', заключенные в строки '' ', завершенные'\n 'IGNORE 1 LINES;

Это будет работать для id 1 и 2, однако я получаю предупреждающее сообщение как таковое

"Строка 3 не содержит данных для всех столбцов".

Я подумал, что дополнительный "в третьем столбце вызвал эту проблему". Интересно, может ли какой-либо путь из аргумента mysql load side решить это? В противном случае, возможно, я сделаю некоторую работу по очистке перед загрузкой файла.

Теги:

1 ответ

1
Лучший ответ

Вам придется избегать двойных кавычек, которые вы хотите вставить. Это можно сделать, добавив ESCAPED BY '<char>' в команду после FIELDS. В приведенном ниже примере показано, как установить обратную косую черту в качестве символа escape.

...FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\'...

Дополнительную информацию см. В https://dev.mysql.com/doc/refman/8.0/ru/load-data.html.

  • 0
    Спасибо osdev0 за предложенное решение. :) Это действительно хорошая идея.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню