2011-03-05 45 views
0

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

mysqldump mydatabase > dump.sql 

意志为我做的工作去,会mysqldump的自动转换我的GBK数据库为utf8给我吗?由于所有表最初都有一个bgk字符集,如果我想将转储文件导入到另一个utf8数据库中,那么它是否也能工作?

回答

0

我想将转储文件导入到另一个utf8数据库,将 工作以及?

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

想象这是转储文件的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数据库中