我有时间表的数据库表,其中包含一些常用字段。
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 ....
但...
当我尝试查看输出文件的源时,文件中仍然存在换行符,因此Excel的CSV导入会破坏Excel向导创建的所有奇特宏和数据透视表。
对最佳行动有何想法?