Я намерен загрузить файл (структура, как показано ниже) в таблицу 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 решить это? В противном случае, возможно, я сделаю некоторую работу по очистке перед загрузкой файла.
Вам придется избегать двойных кавычек, которые вы хотите вставить. Это можно сделать, добавив ESCAPED BY '<char>'
в команду после FIELDS
. В приведенном ниже примере показано, как установить обратную косую черту в качестве символа escape.
...FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\'...
Дополнительную информацию см. В https://dev.mysql.com/doc/refman/8.0/ru/load-data.html.