MySQL导出到输出文件:CSV转义字符

我有时间表的数据库表,其中包含一些常见的字段。

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向导创建的所有奇特宏和数据透视表。

对最佳行动有何想法?

回答:

我认为您的声明应如下所示:

SELECT id, 

client,

project,

task,

description,

time,

date

INTO OUTFILE '/path/to/file.csv'

FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'

LINES TERMINATED BY '\n'

FROM ts

主要没有FIELDS ESCAPED BY '""'选项,OPTIONALLY ENCLOSED BY

'"'将在描述字段等方面发挥作用,并且您的数字将在Excel中视为数字(而不是由数字组成的字符串)

还可以尝试致电:

SET NAMES utf8;

在选择外档之前,这可能有助于内联字符编码(所有UTF8)

让我们知道您的身体情况如何。

以上是 MySQL导出到输出文件:CSV转义字符 的全部内容, 来源链接: utcz.com/qa/419645.html

回到顶部