Oracle exp/imp字符集相關問題

ljm0211發表於2012-07-02

Exp匯出的資料dmp檔案中的第2,3位元組表示匯出資料時的OS字符集ID(NLS_LANG環境變數儲存)

下圖中:

①表示目標OS的字符集

②表示目標DB的字符集

③表示目標DB的NCHAR字符集

④表示源OS的字符集

⑤表示源DB的NCHAR字符集

下圖例子中,匯出時OS字符集為ZHT16MSWIN950,目標OS字符集US7ASCII,匯入後出現亂碼。

將目標OS字符集改為”AMERICAN_AMERICA.UTF8”或”TRADITIONAL CHINESE_TAIWAN.ZHT16MSWIN950”匯入後正常。

此例中匯出的資料檔案在使用exp匯出時,沒有將OS字符集設定為和DB一致(最好在exp時將OS字符集NLS_LANG設定為和DB一致),但” ZHT16MSWIN950”字符集正常解析了該DB中的所有字元,imp匯入時要保證目標OS能正確解析資料檔案中的所有字元,方法是設定目標OS的字符集與資料檔案字符集(源OS字符集)一致,或為其超集。

-------------------------------例子------------------------------------------

[oracle@hi0-ibmsv508 u01]$ imp

Import: Release 10.2.0.1.0 - Production on Mon Apr 7 14:59:45 2008

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

Username: kevin

Password:

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production

With the Partitioning, OLAP and Data Mining options

Import file: expdat.dmp > CCIGPM.DMP

Enter insert buffer size (minimum is 8192) 30720>

Export file created by EXPORT:V10.01.00 via conventional path

Warning: the objects were exported by CCIGPM, not by you

import done in US7ASCIIcharacter set andAL16UTF16NCHAR character set

import server uses AL32UTF8character set (possible charset conversion)

export client uses ZHT16MSWIN950character set (possible charset conversion)

export server uses UTF8NCHAR character set (possible ncharset conversion)

List contents of import file only (yes/no): no >

Ignore create error due to object existence (yes/no): no >

Import grants (yes/no): yes >

Import table data (yes/no): yes >

------------------------------------------------------------------------------------------------------------

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11411056/viewspace-734348/,如需轉載,請註明出處,否則將追究法律責任。

相關文章