我们现在mysql5.1的默认编码是:LATIN1现在想做SPHINX全文检索,中文检索。需要把表转成UTF8的。我现在想到的是建一个专门用于搜索的数据库。把LATIN1的数据转成UTF8的导到新建的数据库中来。但是现在不知道怎么把数据转到新建的数据库来呢?

解决方案 »

  1.   

    insert into db2.tb1 select * from db1.tb1;这样行么?
      

  2.   

    用MYSQLDUMP导出,再导入到新数据库中
      

  3.   

    这个没有好办法。一般是做法是1. 从原表中导出 mysqldump  或者 select INTO OUTFILE 
    2. 创建新表或者数据库,设置它的字符集为UTF8.
    3. 再使用支持UTF8的环境将导出的文件导入到新表。
      

  4.   

    当然理论上也可以写程序读原表中的内容LATIN1,然后通过程序转换为UTF8
      

  5.   

    以上所有方法试过。都不行。
    1:用MYSQDUMP导出,ICONV转码。MYSQL导入。继续乱码。
    2:先建好新库。都是UTF8编码。,用PHP程序导出。ICONV转码。导入。仍然乱码。
    3:直接插入:insert into db2.tb1 select * from db1.tb1;仍然乱码。
    郁闷是不是中间有点要注意的地方?
      

  6.   

    你还是用 select INTO OUTFILE  导出文件吧。
      

  7.   

    用MYSQLDUMP导出 ,用WORD之类的软件打开,看看有无提示,另存为其它格式试试
      

  8.   

    已验证的方法:
    1.用mysqldump导出数据(如:XXX.SQL)。
    2.用iconv程序转换XXX.SQL的内码。(mysql提供的编码转换工具)
    3.定义好新数据库的字符集。
    4.把转换好的XXX.SQL导入新数据库。
    mysql转换编码的关键iconv在程序,例如格式:
    iconv -t 新字符集名 -f 旧字符集名 -c 旧SQL文件>新SQL文件
    具体的去mysql网站下载iconv看它的help。
      

  9.   

    哦,对了,在“把转换好的XXX.SQL导入新数据库”之前,要先将SQL里的Create table的字符集改为新字符集
      

  10.   

    iconv -t 新字符集名 -f 旧字符集名 -c 旧SQL文件>新SQL文件是不是
    iconv -t utf8 -f latin1 -c oldsql.sql > newsql.sql这样吗?
      

  11.   

    看你数据量了1,先导出,
    2,转换编码(简单的可用editplus打开别存为utf8)3,将里的建表字符集替换为utf84,导入--在mysql客户端
    mysql> set names 'utf8' ;
    mysql> source  xxx.sql;上面的第四步如果可行可直接操作第四步不要其他步