今天主要介绍mysqldump如何迁移不同编码的数据库。这是一个实验来证明。1.创建测试数据库createdatabaset1defaultcharactersetgbkcollat??egbk_chinese_ci;createdatabaset2defaultcharactersetutf8collat??eutf8_general_ci;uset1;createtablet11(idint,namevarchar(10),primarykey(id))engine=innodbdefaultcharset=utf8;createtablet12(idint,namevarchar1default=engine(10),primarycharset=ing(10),primarycharacter12;uset2;createtablet21(idint,namevarchar(10),primarykey(id))engine=innodbdefaultcharset=utf8;createtablet22(idint,namevarchar(10),primarykey(id))engine=innodbdefaultcharset=gb2312;2。仿真数据uset1;insertintot11values(1,'hwb');insertintot11values(2,'hwb2');insertintot12values(1,'hwb');insertintot12values(2,'hwb2');uset2;insertintot21values(1,'hwb');insertintot21values(2,'hwb2');insertintot22values(1,'hwb');insertintot22values(2,'hwb2');3.导出数据库mysqldump-uroot-pt1>/tmp/t1_old.sqlmysqldump-uroot-pt2>/tmp/t2_old。sql4。如果要转编码为utf-8,就写在t参数后面。以前的字符集是gb2312,写在-f参数后面就行了。iconv-tutf-8-fgb2312-c/tmp/t1_old.sql>/tmp/t1_new_utf8.sqliconv-tutf-8-fgb2312-c/tmp/t2_old.sql>/tmp/t2_new_utf8.sql5。修改/tmp/new_utf8。sql文件的字符编码sed's/CHARSET=gbk/CHARSET=utf8/g'/tmp/t1_new_utf8.sql>/tmp/t1_new_utf8_new.sqlsed's/CHARSET=gb2312/CHARSET=utf8/g'/tmp/t1_new_utf8_new.sql>/tmp/t1_new_utf8_new2.sqlsed's/CHARSET=gbk/CHARSET=utf8/g'/tmp/t2_new_utf8.sql>/tmp/t2_new_utf8_new.sqlsed's/CHARSET=gb2312/CHARSET=utf8/g'/tmp/t2_new_utf8_new.sql>/tmp/t2_new_utf8_new2.sql6.新建数据库createdatabaset3defaultcharactersetutf8collat??eutf8_general_ci;创建数据库4defaultcharactersetutf8collat??eutf8_general_ci;7.导入uset3;source/tmp/t1_new_utf8_new2.sql;uset4;source/tmp/t2_new_utf8_general_ci;不同表和字符集的测试已经迁移到数据库heretest。
