Oracle imp字符集转换,imp/exp 字符集转换
明白ORACLE的多國語言設(shè)置,ORACLE多國語言設(shè)置是為了支持世界范圍的語言與字符集,一般對語言提示,貨幣形式,排序方式和CHAR,VARCHAR2,CLOB,LONG字段的數(shù)據(jù)的顯示等有效。ORACLE的多國語言設(shè)置最主要的兩個(gè)特性就是國家語言設(shè)置與字符集設(shè)置,國家語言設(shè)置決定了界面或提示使用的語言種類,字符集決定了數(shù)據(jù)庫保存與字符集有關(guān)數(shù)據(jù)(如文本)時(shí)候的編碼規(guī)則。正如剛才上面的一個(gè)小例子,環(huán)境變量NLS_LANG的不同,導(dǎo)致EXP幫助發(fā)生變化,這就是多國語言設(shè)置的作用(NLS_LANG包含國家語言設(shè)置與字符集設(shè)置,這里起作用的是國家語言設(shè)置,而不是字符集)。
ORACLE字符集設(shè)定,分為數(shù)據(jù)庫字符集和客戶端字符集環(huán)境設(shè)置。在數(shù)據(jù)庫端,字符集在創(chuàng)建數(shù)據(jù)庫的時(shí)候設(shè)定,并保存在數(shù)據(jù)庫props$表中,對于8i以上產(chǎn)品,已經(jīng)可以采用“Alter database character set 字符集”來修改數(shù)據(jù)庫的字符集,但也僅僅是從子集到超集,不要通過update props$來修改字符集,如果是不支持的轉(zhuǎn)換,可能會失去所有與字符集有關(guān)的數(shù)據(jù),就是支持的轉(zhuǎn)換,也可能導(dǎo)致數(shù)據(jù)庫的不正常工作。字符集分為單字節(jié)字符集與多字節(jié)字符集,US7ASCII就是典型的單字節(jié)字符集,在這種字符集中l(wèi)ength=lengthb,而ZHS16GBK就是常用的雙字節(jié)字符集,在這里lengthb=2*length。
在客戶端的字符集環(huán)境比較簡單,主要就是環(huán)境變量或注冊表項(xiàng)NLS_LANG,注意NLS_LANG的優(yōu)先級別為:參數(shù)文件à注冊表à環(huán)境變量àalter session。NLS_LANG的組成為“國家語言設(shè)置.字符集”,如nls_lang=simplified chinese_china.zhs16gbk??蛻舳说淖址詈门c數(shù)據(jù)庫端一樣(國家語言設(shè)置可以不一樣,如zhs16gbk的字符集,客戶端可以是nls_lang =simplified chinese_china.zhs16gbk或Ameircan_America.zhs16gbk,都不影響數(shù)據(jù)庫字符的正常顯示),如果字符集不一樣,而且字符集的轉(zhuǎn)換也不兼容,那么客戶端的數(shù)據(jù)顯示與導(dǎo)出/導(dǎo)入的與字符集有關(guān)的數(shù)據(jù)將都是亂碼。
使用一點(diǎn)點(diǎn)技巧,就可以使導(dǎo)出/導(dǎo)入在不同的字符集的數(shù)據(jù)庫上轉(zhuǎn)換數(shù)據(jù)。這里需要一個(gè)2進(jìn)制文件編輯工具即可,如uedit32。用編輯方式打開導(dǎo)出的dmp文件,獲取2、3字節(jié)的內(nèi)容,如00 01,先把它轉(zhuǎn)換為10進(jìn)制數(shù),為1,使用函數(shù)NLS_CHARSET_NAME即可獲得該字符集:
SQL> select nls_charset_name(1) from dual;
NLS_CHARSET_NAME(1)
-------------------
US7ASCII
可以知道該dmp文件的字符集為US7ASCII,如果需要把該dmp文件的字符集換成ZHS16GBK,則需要用NLS_CHARSET_ID獲取該字符集的編號:
SQL> select nls_charset_id('zhs16gbk') from dual;
NLS_CHARSET_ID('ZHS16GBK')
--------------------------
852
把852換成16進(jìn)制數(shù),為354,把2、3字節(jié)的00 01換成03 54,即完成了把該dmp文件字符集從us7ascii到zhs16gbk的轉(zhuǎn)化,這樣,再把該dmp文件導(dǎo)入到zhs16gbk字符集的數(shù)據(jù)庫就可以了。(注意,十進(jìn)制數(shù)與十六進(jìn)制之間的轉(zhuǎn)換,想明白其中的道理)[@more@]
來自 “ ITPUB博客 ” ,鏈接:http://blog.itpub.net/503782/viewspace-983264/,如需轉(zhuǎn)載,請注明出處,否則將追究法律責(zé)任。
總結(jié)
以上是生活随笔為你收集整理的Oracle imp字符集转换,imp/exp 字符集转换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle监听 客户 实例,oracl
- 下一篇: oracle遇null赋默认值,使用hi