以US7ASCII的庫中導出的數據導入到字符集為ZHS16GBK的庫為例子:
假設US7ASCII的庫是A機,字符集為ZHS16GBK的庫為B機
1.確定你A機上的oracle用戶的.profile文件中的NLS_LANG是US7ASCII,正常的導出所有數據。
2.然後傳到B機上,bin模式,然後在B機上設定好oracle用戶的設定環境變量NLS_LANG=AMERICAN_AMERICA.US7ASCII
以sys用戶執行update props$ set values$='US7ASCII'
where name='NLS_CHARACSET';
3.正常的導入數據至ZHS16GBK的數據庫中去,重新啟動數據庫,此時查看原來導入的數據應該已經中文了。
4.把環境變量改回來,NLS_LANG=AMERCIAN_AMERICA.ZHS16GBK
以sys用戶登陸ZHS16GBK的數據庫然後執行一下語句:
update props$ set values$='ZHS16GBK'
where name='NLS_CHARACSET';
重新啟動數據庫讓其修改生效即可。
如果不放心,可以把當前ZHS16GBK數據庫中的數據正常exp出來,然後重新建庫後正常導入。
以上過程我在oracle9.2.0和9.0.1,8.1.7上測試成功。