使用MySQL进入OUTFILE生成Excel可读的UTF8数据

时间:2011-04-11 08:34:55

标签: mysql sql excel into-outfile

我遇到与this question类似的问题。那就是 - 我需要将MySQL数据库中的一些UTF8数据导出到MS Excel。

Excel提供了好处:

  • Excel将UTF8格式的CSV文件打开为ANSCI,从而打破
  • Excel 正确打开制表符分隔的UTF8文件,但不支持换行符(我的数据有换行符,但在最坏的情况下我可能会丢失这些行)
  • Excel apparently,打开UTF-16LE(小端)编码的CSV确定。但是,据我所知,MySQL INTO OUTFILE不接受内容编码参数,只是默认为数据库编码(UTF8)。

我的网络应用程序是PHP驱动的,但不幸的是我不能使用PHP Excel文件制作库,因为数据库非常大。我的所有出口都必须通过MySQL完成。

如果有人知道如何让MySQL在这个问题上跳过Excel,那就太棒了。

非常感谢,

杰克

修改This answer描述了适用于Excel 2007的解决方案。在文件中添加“BOM”,我可以通过将输出的文件提供给文件来实现客户端通过附加BOM的PHP脚本。理想情况下,我想找到一个在2003年也有效的解决方案。

2 个答案:

答案 0 :(得分:1)

为了处理类似的问题,我建议添加:

FIELDS ENCLOSED BY '"'

来自mysql docs的更完整示例:

SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt'
  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
  LINES TERMINATED BY '\n'
  FROM test_table;

答案 1 :(得分:1)

我记得用Excel遇到了这个问题。 BOM修复程序适用于Excel 2007和2010.我们也想支持2003,但我们的解决方案是只编写XLS文件而不是CSV文件(使用Java)。这对你来说听起来不是一个选择,因为你是从MySQL导出的。想到的一个想法是在导出后将UTF8输出转换为UTF-16LE。 This page解释了如何使用Perl。