将整个数据库从一个charset / collat​​ion转换为utf8 / utf8_unicode_ci

时间:2014-09-25 11:02:33

标签: mysql sql utf-8 collation

我知道已经有很多类似的问题,很多甚至相同;我花了最后45分钟来寻找可能的解决方案,但我找不到任何解决方案都没有回答我所有的问题/关注。

我通过CLI获得了这个可能的解决方案:

mysql --user=username --password=your_pass --database=dbname -B -N -e
"SHOW TABLES"  | awk '{print "ALTER TABLE", $1, "CONVERT TO CHARACTER SET utf8
COLLATE utf8_unicode_ci;"}' | mysql --user=username --password=your_pass 
--database=dbname &

然后我们从this page得到一个,基本上这样做:

mysqldump --add-drop-table -u root --password='password' db_name | sed
-e 's/CHARSET\=latin1/CHARSET\=utf8\ COLLATE\=utf8_unicode_ci/g' | iconv -f
latin1 -t utf8 | mysql -u root --password='password' db_name

然而,这个似乎你必须一次做一张桌子。

然后有this one,除了它只是字符集和整理这个事实之外,这听起来很糟糕。

所以基本上我正在寻找类似于最后一个将转换整个数据库的charset 排序规则的解决方案,并且是一个做得很好的解决方案,例如正确转换包括全文密钥的表索引正如上一篇文章所指出的那样。

我不确定前两个解决方案在正确转换索引方面有多好。

所以有了这么多解决方案,我只是在找一个可以正确转换的东西,包括表格,列和放大器。索引。

0 个答案:

没有答案