mysqldump字符集问题

时间:2011-03-05 07:27:06

标签: mysql character-encoding mysqldump

我有一个数据库,其中存储的数据以GBK编码。现在我想完全转储它并在utf8中生成转储文件。这样我就可以将整个数据库从GBK转换为utf8。 mysqldump实用程序似乎是正确的方法,我只是查看了mysqldump文档http://dev.mysql.com/doc/refman/5.5/en/mysqldump.html#option_mysqldump_set-charset,它似乎使用了utf8字符集。所以我的问题是我可以选择

mysqldump mydatabase > dump.sql

为我做的工作,mysqldump会自动将我的GBK数据库转换为utf8吗?并且由于所有表都是最初设置了bgk字符集,如果我想将转储文件导回到另一个utf8数据库中,那么它也可以吗?

1 个答案:

答案 0 :(得分:0)

  

我想将转储文件导回到另一个utf8数据库中   那还行吗?

在mysql中,charset分配在多个级别(连接,表,字段,ecc) 假设旧数据库中的所有这些级别都使用charset GBK,并且新数据库中的所有这些级别都使用charset utf8,则只需替换每个级别的charset声明。

想象一下,这是转储文件 dump.sql

的一部分
CREATE TABLE IF NOT EXISTS `mytable` (
  `id` int(11) NOT NULL auto_increment,
  `myname` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=gbk AUTO_INCREMENT=1065 ;

您需要的是将其转换为

CREATE TABLE IF NOT EXISTS `mytable` (
  `id` int(11) NOT NULL auto_increment,
  `myname` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1065 ;

你可以用 sed

来做到这一点
sed -i 's/gbk/utf8/g' dump.sql

现在文件已准备好正确导入到utf8数据库