在mysql中导出和导入utf8数据:最佳实践

时间:2010-05-04 08:16:21

标签: mysql utf-8 import export

我们经常面临需要使用他/她需要翻译的数据库中的数据向我们的客户发送数据文件。大多数情况下,此导出是CSV或XLS。 大多数情况下,我们使用phpmyadmin创建一个csv转储,并获取一个xls文件作为回复的翻译数据。问题是,大多数情况下数据是UTF8,当文件以xls形式返回时,每次我们再次将数据加载到mysql中时,我们最终会遇到utf8问题,字符无法正常显示等等......

我们已经将mysql中的所有内容从my.conf复制到了列字符集,所有内容都正确设置为UTF8。

我的问题是如何解决编码问题,因为已经解决了,但我们将来如何才能最好地处理这种情况?我们应该交出哪种出口格式?我们应该如何导入(只是mysql加载数据infile或我们自己的处理脚本)。关于如何处理这种情况的一般共识是什么?

我们希望尽可能继续使用excel,因为这几乎是每个人都期望的格式,包括我们客户的翻译机构。我们客户的易用性是这里最重要的因素,每次都不会让我们遇到重大问题。两全其美:)

1 个答案:

答案 0 :(得分:1)

我目前正在处理的应用程序也包括数据导入的功能。数据主要以utf-8编码。

我的方法是将导入的CSV(或制表符分隔)(在任何编码中)文件预处理为客户端脚本(Python)中正确的utf-8编码的临时CSV文件,并使用{{3}加载文件的内容声明。

文件的编码由LOAD DATA INFILE系统变量控制(变量应在服务器级别设置),从MySQL 5.1.17开始可以被 CHARACTER SET 覆盖LOAD DATA INFILE的子句。

唯一应该知道的是MySQL为每个字符存储最多3个字节而不是4个字符(这可能是东方语言的问题)。

要有效地导出大量数据,您可以使用 SELECT ... INTO OUTFILE 语句。