使用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;