У меня есть таблица расписаний с некоторыми общими полями.
id, client_id, project_id, task_id, description, time, date
Есть и другие, но в этом суть.
У меня в одну ночь выполняется экспорт в эту таблицу в файл CSV, чтобы предоставить пользователю резервную копию своих данных. Он также используется как импорт данных для файла макроса Excel с некоторыми пользовательскими отчетами.
Все это работает со мной, циклически просматривая расписания с помощью php и печатая строки в файл.
Проблема в большой базе данных, которая может занять несколько часов, что неприемлемо. Поэтому я переписал его с помощью команды MySQL INTO OUTFILE
, и он сократился до нескольких секунд для запуска, что было здорово.
Проблема сейчас в том, что я не могу избежать всех символов новой строки и т. Д. В поле описания. На самом деле, пользователь может ввести здесь любую комбинацию символов, включая возврат каретки / новые строки.
Это фрагмент кода MySQL, который у меня есть:
SELECT id,
client,
project,
task,
REPLACE(REPLACE(ifnull(ts.description,''),'\n',' '),'\r',' ') AS description,
time,
date
INTO OUTFILE '/path/to/file.csv'
FIELDS ESCAPED BY '""'
TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM ....
Но ...
Когда я пытаюсь посмотреть на источник выходного файла, в нем все еще существуют новые строки, поэтому импорт CSV для Excel разбивает все модные макросы и сводные таблицы, созданные мастером Excel.
Есть мысли о том, как лучше поступить?