源数据库的字符集是默认的GBK,现在要将其迁移到UTF字符集的数据库中,应该如何迁移?

解决方案 »

  1.   

    建议先作备份,把props$中的字符集改成你要的字符集,操作系统环境变量NLS_LANG改称你要的字符集,然后作exp导出
    但我测试时发现导入成UTF8的字符集好像不够大,很多汉字变成乱码
      

  2.   

    乱码我到是没出现,就是imp的时候出现不够长了,查了点资料说是把目标数据库的字段改成源数据库的2倍,打算先测试一下!btw:我在exp之前没有修改源数据库的字符集,直接导出。
      

  3.   

    如果是exp,imp他会自动建表,不需要手工建表阿
      

  4.   

    1楼的方法不好,看这个:
    http://www.itpub.net/archiver/tid-917943.html
      

  5.   

    谢谢!我看了这篇文章,但我有个疑问,如果把源数据库的GBK字符集直接转换成UTF后,会不会影响数据内容,类似于,当我把GBK中导出的dmp文件直接imp到UTF数据库中时提示长度不够的问题,我直接在源数据库中转换的时候会不会也出现这个问题?
      

  6.   

    上述方法无法将数据库的字符集从GBK转换成UTF,不知道有什么其他的方法吗?
      

  7.   

    无法直接将GBK的字符集转换成UTF8,UTF8不是GBK的超集,只好将表的字段长度加倍。囧
      

  8.   

    gbk,每个字符都是2个字节。utf8,英文字符1 byte, 汉字有些2byte,有些 3byte所以你要用那文章所的csscan 命令来检测,这个命令检测成功了才能更新字符集的。如果不成功,你得去看那命令的报告,根据报告来修改你的表结构什么的。