我有一个数据库,其中存储的数据以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数据库中,那么它也可以吗?
答案 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数据库