2017-04-20 43 views
0

我有一个MySQL数据库,其中的数据以latin1字符编码存储。如何使用latin1字符集导出数据并维护此字符集

我需要将这些数据移植到mysql数据库中的新环境中,但完全支持utf8编码。

我已经阅读了很多文章,最后为了解决这个问题,我选择使用mysqldump导出数据,而不使用任何特殊参数作为选项--default-character-set。这似乎工作正常,但我对此有许多疑问。

这是解决此问题的正确方法吗? 如果不是,我如何导出和导入这些数据并保持其原始编码?

一些技术信息。我需要通过两台服务器Linux Ubuntu进行迁移,其中mysql的版本是5.6.33。

任何帮助表示感谢。

再次感谢洛伦佐。

+0

你的意思是你想*导出*您Latin-1的数据,然后输入* *成转码为UTF-8新的数据库?或者你想将其导入到为其默认设置为UTF-8的数据库,但是你希望自己的数据仍然在Latin1的导入后,被编码?请澄清你的问题。 –

+0

嗨,琼斯。是的,我需要将数据导入到其中的默认设置为UTF-8的数据库,但我想我的数据仍然在Latin1的我导入后进行编码。谢谢。 – Lorenzo

回答

0

为什么你在意存储的字符集是什么?我的观点是,你可以隐藏这个细节。无论如何,如果你愿意的话,我会告诉你如何以这种方式存储它。

导出时,指定将文件写入latin1或utf8或utf8mb4。

导入时,首先声明导入文件在编码。

然后将列和表格声明为latin1或utf8或utf8mb4。如有必要,负载将转码。

所有的latin1字符都有对应的utf8/utf8mb4/UTF-8编码,所以它不会在您的场景中绊倒

应该用utf8mb4构建所有新表。服务器是默认到utf8;你可以在你的列/表声明上覆盖它。

可以将一列声明为latin1,但使用utf8mb4连接。再次,转码将是透明的,无损(或阅读)。