У меня есть таблица таблиц расписаний с некоторыми распространенными feilds.
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.
Любые мысли о лучшем действии?