EXP/IMP 中涉及到的字符集的設定
EXP和IMP是Oracle中使用頻率很高的資料匯入匯出的工具,當使用EXP/IMP將一個Server上的Oracle DB中的資料匯入另一Server上另一個Oracle DB時,就涉及到了4個字符集的問題。4個字符集分別為:資料來源Server的字符集、資料來源DB的字符集、目標Server的字符集、目標DB的字元 集。4個字符集不同時如何在匯入匯出時設定環境變數NLS_LANG才能保證資料匯出匯入成功呢?下面以一個例子來解釋這個問題。
例如:資料來源Server OS字符集為Czech(捷克文字符集),資料來源DB為Big5(繁體中文字符集),目標Server OS字符集Mexico(墨西哥字符集),目標DB字符集CHS(簡體中文字符集)。現在要將資料來源DB的資料使用EXP/IMP工具匯入目標DB,在數 據源Server上匯出前要設定環境變數NLS_LANG=Big5,生成資料檔案後將資料檔案傳送到目標Server時,匯入前要設定環境變數 NLS_LANG=Big5,這樣才能保證匯入成功。
下面對以上例子中設定環境變數的依據解釋一下。首先看資料來源,OS字符集為Czech,DB字符集為Big5,匯出資料檔案時,如果不設定環境變數 NLS_LANG,預設會按照OS的字符集生成資料檔案,這樣就會將Big5的資料按照Czech匯出,字符集不一致的情況下可能會出現編碼錯誤。所以要 將NLS_LANG設為Big5,環境變數是對OS而言的,這樣就生成以Big5字符集編碼的資料檔案,Big5->Big5保證了資料的正確。當 資料檔案傳送到目標Server時,可知該資料檔案是以Big5編碼的,在匯入目標DB時如果不設定環境變數,預設採用目標Server OS的字符集Mexico解析資料檔案,Big5的資料檔案採用Mexico字符集解析可能會出現問題,所以要設定環境變數NLS_LANG為Big5以 保證資料解析的正確。
現在也許還存在一個疑問,資料檔案為Big5字符集,目標DB為CHS,環境變數NLS_LANG設定為Big5,能保證正確匯入目標DB嗎?其實在目標 Server解析資料檔案存在一個先解析再插入的過程,資料檔案先根據設定的環境變數的字符集解析成資料,而得到的資料再根據目標DB的字符集編碼插入 DB,因此我們只要保證資料檔案解析正確就可以了。
從前面的例子可以總結一個規律,那就是資料來源Server和目標Server在執行匯入匯出前設定的環境變數NLS_LANG的值要與源DB一致。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11411056/viewspace-734349/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- imp/exp 字符集轉換
- 探索Oracle之 EXP/IMP過程中的字符集問題Oracle
- Oracle exp/imp字符集相關問題Oracle
- Oracle exp 設定客戶端字符集Oracle客戶端
- exp/imp工具的使用
- 【exp/imp不同版本】Oracle不同版本的exp/imp使用注意事項Oracle
- Oracle的exp/imp詳解Oracle
- exp/imp工具
- Oracle imp/expOracle
- 【exp/imp】將US7ASCII字符集的dmp檔案匯入到ZHS16GBK字符集的資料庫中ASCII資料庫
- RMAN與exp / imp的區別
- 老外的EXP&IMP總結
- exp和imp的詳細操作
- exp匯出檔案時 字符集設定問題
- 【EXP/IMP】使用EXP /IMP工具“模糊”匯出和匯入
- oracle exp和impOracle
- oracle imp和expOracle
- exp imp資料
- oracle exp imp 用法Oracle
- EXP&IMP PIPE
- ORACLE IMP和EXP的使用實驗Oracle
- exp/expdp與imp/impdp的區別
- EXP/IMP和EXPDP/IMPDP的區別
- Oracle的exp、imp的資料遷移步驟Oracle
- exp和imp詳解
- 淺談exp/imp(上)
- 淺談exp/imp(下)
- exp/imp命令詳解
- IMP和EXP筆記筆記
- EXP/IMP 學習(五)
- EXP/IMP 學習(四)
- EXP/IMP 學習(三)
- EXP/IMP 學習(二)
- EXP/IMP 學習(一)
- EXP/IMP 學習(六)
- exp_imp實戰
- 關於exp/imp的總結學習
- exp/imp對資料庫版本的要求資料庫