使用MySQL到OUTFILE来生成Excel可读的UTF8数据

我有一个类似于这个问题的问题 。 那就是 – 我需要将MySQL数据库中的一些UTF8数据导出到MS Excel。

Excel提供的细节:

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

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

如果有人知道如何让MySQL通过Excel跳到这一块,那将会很棒。

非常感谢,

插口

编辑 : 这个答案描述了一个适用于Excel 2007的解决scheme。在文件中添加一个“BOM”,我可以通过附加BOM的PHP脚本将输出文件提供给客户端。 理想情况下,我想find一个解决scheme,在2003年工作也。

我记得用Excel来解决这个问题。 BOM修正适用于Excel 2007和2010。我们也希望支持2003,但是我们的解决scheme只是编写XLS文件而不是CSV文件(使用Java)。 这听起来不像是你的select,因为你从MySQL导出。 想到的一个想法是在导出之后将UTF8输出转换为UTF-16LE。 本页面解释了如何使用Perl。

为了处理突发事件,我build议添加:

FIELDS ENCLOSED BY '"' 

来自mysql文档的更完整的示例:

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