mysqldump字符集问题

mysqldump字符集问题,mysql,character-encoding,mysqldump,Mysql,Character Encoding,Mysqldump,我有一个数据库,其中存储的数据用GBK编码。现在我想对它进行完全转储,并将转储文件设置为utf8。这样我可以将整个数据库从GBK转换为utf8。mysqldump实用程序似乎是正确的选择,我刚刚查看了mysqldump文档,它似乎使用了utf8字符集。所以我的问题是我能跟你一起去吗 mysqldump mydatabase > dump.sql 这对我来说行吗,mysqldump会自动将我的GBK数据库转换为utf8吗?由于所有的表最初都有一个bgk字符集,如果我想将转储文件导入到另一个

我有一个数据库,其中存储的数据用GBK编码。现在我想对它进行完全转储,并将转储文件设置为utf8。这样我可以将整个数据库从GBK转换为utf8。mysqldump实用程序似乎是正确的选择,我刚刚查看了mysqldump文档,它似乎使用了utf8字符集。所以我的问题是我能跟你一起去吗

mysqldump mydatabase > dump.sql
这对我来说行吗,mysqldump会自动将我的GBK数据库转换为utf8吗?由于所有的表最初都有一个bgk字符集,如果我想将转储文件导入到另一个utf8数据库中,这也行吗

我想将转储文件导入另一个utf8数据库,will 那也行吗

在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=utf8 AUTO_INCREMENT=1065 ;
你可以用sed做这个

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

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 -i 's/gbk/utf8/g' dump.sql