从gb2312库导入utf8出现的问题

andywzw 2008-06-27 03:53:34
请教个问题,我现在把数据库从oracle9i导入到10G,字符集原来是gb2312,导入后的字符集是utf8,在导入的过程中类似SBILLNO" (actual: 54, maximum: 50)这样的错误,我从导入日志里捕获了这样的信息,可以根据日志去查找所涉及原数据库的表字段,再导出再导入新数据库,但是现在数据库太大,这样的日志太多,信息靠人工提取不全,有没有什么办法能对原数据库字段转换成utf8后需要的字符宽度做出一次性的评估,并且成批修改呢,谢谢
...全文
70 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
andywzw 2008-06-30
  • 打赏
  • 举报
回复
目标数据库不能修改字符集,因为目标数据库需要编程utf8的字符集。
  • 打赏
  • 举报
回复
把目标数据库的字符集改成gb2312.
oracledbalgtu 2008-06-28
  • 打赏
  • 举报
回复
gb2312的字符有的在utf8中可能不存在,有的1个gb2312的字符,在utf8中需要多个字节存储,导致超出最大长度的错误。

解决这个问题的王道,不是去增加列的长度等,而是应该把目标数据库的字符集改成gb2312.
不容易出错的方法是:
重新创建instance,选gb2312字符集。
exp utf8的instance的数据,然后imp到新建的instance;
exp 老gb2312的instance的数据,然后imp到新建的instance;


[Quote=引用楼主 andywzw 的帖子:]
请教个问题,我现在把数据库从oracle9i导入到10G,字符集原来是gb2312,导入后的字符集是utf8,在导入的过程中类似SBILLNO" (actual: 54, maximum: 50)这样的错误,我从导入日志里捕获了这样的信息,可以根据日志去查找所涉及原数据库的表字段,再导出再导入新数据库,但是现在数据库太大,这样的日志太多,信息靠人工提取不全,有没有什么办法能对原数据库字段转换成utf8后需要的字符宽度做出一次性的评估,并且成批修改呢,谢谢
[/Quote]

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧