2014-05-22 285 views
0

我想問你在不同字符集的數據庫之間數據導出/導入區域的幫助。從中導出數據庫是:Oracle導入導入問題

WE8ISO8859P1/NCHAR AL16UTF16 

數據庫導入是:

UTF8/UTF8 

我試圖用不同NLS_LANG設置,但沒有成功(見下文)。我在進口時沒有收到任何錯誤,只有如下評論:

imp test/[email protected] file=mig_test.expdat log=imp.log 

Import: Release 10.2.0.1.0 - Production on Thu May 22 08:54:36 2014 

Copyright (c) 1982, 2005, Oracle. All rights reserved. 


Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit 
Production 
With the Partitioning, OLAP, Data Mining and Real Application Testing options 

Export file created by EXPORT:V10.02.01 via conventional path 
import done in WE8ISO8859P1 character set and UTF8 NCHAR character set 
import server uses UTF8 character set (possible charset conversion) 
export client uses UTF8 character set (possible charset conversion) 
export server uses AL16UTF16 NCHAR character set (possible ncharset conversion) 

什麼都沒有導入。感謝您的評論。

+0

「沒有任何東西被導入」這一事實與字符集轉換無關。而UTF8是一個你應該避免的oracle caharcter集合,它並沒有實現正確設置的UTF8 Unicode。 –

回答

1

第1步:出口

出口與NLS_LANG設置爲AMERICAN_AMERICA.WE8ISO8859P1。 這將使用WE8ISO8859P1數據創建一個導出文件。

步驟2:進口

導入與NLS_LANG設置爲AMERICAN_AMERICA.WE8MSWIN1252 WE8MSWIN1252碼被插入到數據庫中時,轉換到UTF8而在UTF8數據庫中插入的數據被完成。

OR

與NLS_LANG導入設置AMERICAN_AMERICA.UTF8 到UTF8的轉換由進口刀具和UTF8編碼完成插入到數據庫

稍微偏離主題1

您正在使用舊的導入和導出工具。你真的應該使用datapump(impdp,expdp)。它比舊的導入/導出工具更新,更快,更靈活。 http://www.oracle-base.com/articles/10g/oracle-data-pump-10g.php

稍微偏離主題2

不要使用名爲UTF8作爲數據庫字符集的字符集,除非在8.1.7版本需要與Oracle數據庫客戶端和服務器的兼容性和更早的版本,或者除非您的應用程序供應商明確要求。儘管名稱非常相似,但UTF8並不是Unicode編碼UTF-8的正確實現。如果使用UTF8字符集進行UTF-8處理,可能會發生數據丟失和安全問題。 Web相關數據尤其如此,例如XML和URL地址。

Oracle建議使用AL32UTF8作爲數據庫字符集。 AL32UTF8是Unicode標準的UTF-8編碼的Oracle名稱。