2011-03-05 100 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數據庫中