1

我们有一个非常大的 InnoDB MySQL 5.1 数据库,所有表都使用latin1_swedish_ci排序规则。我们想要将所有应该在 ISO-8859-1 中的数据转换为 UTF-8。如果有的话,更改排序规则的效果如何utf8_general_ci

我们最好编写一个脚本来转换数据并插入到一个新表中吗?显然,我们的目标是最大程度地减少重新编码时丢失任何数据的风险。

编辑:我们确实有重音字符,£符号等。

4

2 回答 2

2

如果数据当前仅使用拉丁字符,而您只是想将字符集和排序规则更改为 UTF8 以启用将来添加 UTF-8 数据,那么只需更改字符集和排序规则应该没有问题。当然,我会先在表格的副本中执行此操作。

于 2012-07-17T16:03:06.113 回答
1

大约一周前,我不得不做同样的任务(问题ö, ä, å

  1. 创建了一个dump.sql.
  2. 搜索并全部替换CHARSET=latin1 CHARSET=utf8(在 中dump.sql)。
  3. 搜索并全部替换COLLATE=latin1_swedish_ci COLLATE=utf8_unicode_ci(在 中dump.sql)。
  4. 使用排序规则创建了一个新数据库utf8_unicode_ci
  5. 导入了dump.sql.
  6. 改变了数据库charsetalter database MY_DB charset=utf8;

它工作得很好

注意:在迈克布兰特的评论之后,我认为最好对您特别想要的字段进行手动搜索和替换。或者您可以简单地使用ALTER每个字段而不需要dump.sql. 在我的情况下并没有太大变化,因为我的大部分字段都需要进行 utf 编码

于 2012-07-17T16:01:22.740 回答