最近在处理数据迁移的时候遇到了字符集不一致的问题,搞得很是头疼,过程如下
有新老两台服务器,字符集其实是一样的都是AMERICAN_AMERICA.AL32UTF8
但是NLS_NCHAR_CHARACTERSET却不一样,老机器上是AL16UTF16,新机器上是AL32UTF8,恰好我们的系统数据表很多都是NVARCHAR类型的字段,于是乎数据从老机器迁移过去后全是乱码,新机器也已经用了一段时间了,不可能重装,这就遇到个进退不得的问题,两边现在都有数据,且都有不兼容的字符集字段。
尝试了exp/imp,sql导出/导入,csv导出/导入,都解决不了乱码的问题
最后用了复制黏贴想试试,就是从一个表里直接把数据复制到另一个库的表里,随后发现了一个匪夷所思的问题。
当我select * from table1;时出来的依然都是乱码的显示。
但是当我select * from table1 for update;时显示却是正常的,乱码没有了。
反复试了几次都是这样,换不同的工具也是如此。这真是刷新了我对oracle的认识了,哪位能解答一下
有新老两台服务器,字符集其实是一样的都是AMERICAN_AMERICA.AL32UTF8
但是NLS_NCHAR_CHARACTERSET却不一样,老机器上是AL16UTF16,新机器上是AL32UTF8,恰好我们的系统数据表很多都是NVARCHAR类型的字段,于是乎数据从老机器迁移过去后全是乱码,新机器也已经用了一段时间了,不可能重装,这就遇到个进退不得的问题,两边现在都有数据,且都有不兼容的字符集字段。
尝试了exp/imp,sql导出/导入,csv导出/导入,都解决不了乱码的问题
最后用了复制黏贴想试试,就是从一个表里直接把数据复制到另一个库的表里,随后发现了一个匪夷所思的问题。
当我select * from table1;时出来的依然都是乱码的显示。
但是当我select * from table1 for update;时显示却是正常的,乱码没有了。
反复试了几次都是这样,换不同的工具也是如此。这真是刷新了我对oracle的认识了,哪位能解答一下
这个情况还真不好搞