我试图导入一个大的SQL文件;由一个服务器上的mysqldump创建,然后使用iconv转换;使用这些命令:MySQL在导入时不会保留字符信息
$ mysqldump -uxxx -p xxx > data.sql
$ iconv -f UTF-8 -t ISO-8859-1//TRANSLIT data.sql data.iconv.sql
我注意到, “\ X91” 数据库已在转储变成 “\ XC3 \ X82 \ XC2 \ X91”,因为mysqldump的尝试都转换为UTF-8。我用iconv将它转换回“\ x91”。如果我不转换它们,它们最终会成为新服务器上的“\ xc2 \ x3f”;而不仅仅是“\ x3f”,就像我们现在一样。
因此,如前所述,cp1252编码有一些独特的字符,例如“\ x91”和“\ x92”。这两个字符在新数据库中都转为“\ x3f”;这是我用进口的命令:
$ /opt/mysql5/bin/mysql -uxxx -p -Dxxx < data.iconv.sql
任何人都知道这是怎么发生和怎样做才能预防呢?知道这一点,我应该能够像原来一样移植数据。
额外信息:
我用this source了用于iconv-事情。正如你所看到的,在这个页面上,另外一个人也对cp1252产生了麻烦;也许这是原因。
的serverversion是:
老主持人:版本10.10 DISTRIB 5.0.18,为PC-Linux的GNU(1486) 新主机:版本10.11 DISTRIB 5.0.51,为PC-Linux的GNU (i686)
提到在原件的问题;如果我不这样做,mysqldump生成\ xc2 \ x91而不是\ x91。我相信我在与解决方案相同的页面上阅读,mysqldump试图将所有内容都转换为utf-8。在这种情况下,错误地 – 2008-11-18 12:26:20