我们有一个非常大的 InnoDB MySQL 5.1 数据库,所有表都使用latin1_swedish_ci
排序规则。我们想要将所有应该在 ISO-8859-1 中的数据转换为 UTF-8。如果有的话,更改排序规则的效果如何utf8_general_ci
?
我们最好编写一个脚本来转换数据并插入到一个新表中吗?显然,我们的目标是最大程度地减少重新编码时丢失任何数据的风险。
编辑:我们确实有重音字符,£符号等。
我们有一个非常大的 InnoDB MySQL 5.1 数据库,所有表都使用latin1_swedish_ci
排序规则。我们想要将所有应该在 ISO-8859-1 中的数据转换为 UTF-8。如果有的话,更改排序规则的效果如何utf8_general_ci
?
我们最好编写一个脚本来转换数据并插入到一个新表中吗?显然,我们的目标是最大程度地减少重新编码时丢失任何数据的风险。
编辑:我们确实有重音字符,£符号等。
如果数据当前仅使用拉丁字符,而您只是想将字符集和排序规则更改为 UTF8 以启用将来添加 UTF-8 数据,那么只需更改字符集和排序规则应该没有问题。当然,我会先在表格的副本中执行此操作。
大约一周前,我不得不做同样的任务(问题ö, ä, å
)
dump.sql
.CHARSET=latin1
为 CHARSET=utf8
(在 中dump.sql
)。COLLATE=latin1_swedish_ci
为 COLLATE=utf8_unicode_ci
(在 中dump.sql
)。utf8_unicode_ci
。dump.sql
.charset
的alter database MY_DB charset=utf8;
它工作得很好
注意:在迈克布兰特的评论之后,我认为最好对您特别想要的字段进行手动搜索和替换。或者您可以简单地使用ALTER
每个字段而不需要dump.sql
. 在我的情况下并没有太大变化,因为我的大部分字段都需要进行 utf 编码