Похоже, что для экспорта MySQL невозможно правильно экспортировать и переводы строк и кавычки.
При экспорте MySQL автоматически экранирует оба
- Разделители полей и
- Разделители строк
По умолчанию escape-символ представляет собой обратную косую черту. Вы можете изменить это, добавив ESCAPED BY ''
к вашему запросу.
К сожалению, в "нормальном" (совместимом с Excel) CSV-файле вам, вероятно, нужны разные кодировки для перевода строки и кавычек. В частности, вы хотите, чтобы переводы строк не были удалены, а кавычки были удвоены
например. Если значение содержит символ новой строки, например:
Это строка 1
И это «Строка 2», которая содержит кавычки
должно стать
"Это строка 1
А это "" Строка 2 "", которая содержит кавычки "
Решением, которое я нашел, было предварительное экранирование кавычек и добавление ESCAPED BY ''
(пустая строка) к моему запросу.
SELECT REPLACE(field1, '"', '""'),
REPLACE(field2, '"', '""'),
...
FROM ...
WHERE ...
INTO OUTFILE '/someFile.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY ''
LINES TERMINATED BY '\n'