一般來說,oracle數(shù)據(jù)導(dǎo)出spool方式,中文出現(xiàn)亂碼,這情況是因?yàn)閿?shù)據(jù)庫服務(wù)器和客戶端字符集不匹配,執(zhí)行sqlplus的機(jī)器就是客戶端,服務(wù)器和客戶端也可能是一臺機(jī)器,執(zhí)行sqlplus之前要先設(shè)置客戶端的字符集,在linux上:export NLS_LANG=.......

成都創(chuàng)新互聯(lián)主要從事網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)澤普,十多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575
在windows上set NLS_LANG查詢數(shù)據(jù)庫字符集:select property_value from database_properties where property_name like 'NLS_CHAR%';
1、比如查詢結(jié)果是:ZHS16GBK
那你在sqlplus之前要設(shè)置:export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
然后再登錄sqlplus用spool生成數(shù)據(jù)
檢查下你導(dǎo)出時(shí)候的環(huán)境變量,導(dǎo)入時(shí)的環(huán)境變量
2、比如導(dǎo)出時(shí)NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
導(dǎo)入時(shí)NLS_LANG沒有設(shè)置,或者設(shè)置為其他字符集,則導(dǎo)入的庫內(nèi)漢字就有可能變成亂碼。
解決方法,連接數(shù)據(jù)庫的時(shí)候設(shè)置正確字符集即可。
1、對于Oracle Enterprise Manager中的所有工具,有一個(gè)配置文件名為dbappscfg.properties,修改該文件即可解決上述問題。這個(gè)文件的位置在$ORACLE_HOME\sysman\config目錄下,用任何的文本編輯器打開該文件,在這個(gè)文件里面,找到這樣一項(xiàng),
# SQLPLUS_NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
2、去掉注釋符#,同時(shí)將其修改為
SQLPLUS_NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
3、對于Windows操作系統(tǒng),還需要修改一項(xiàng),在文件中找到# SQLPLUS_SYSTEMROOT=c:\\WINNT40,去掉注釋符,將其修改為你所在機(jī)器的操作系統(tǒng)主目錄。如操作系統(tǒng)的主目錄在D盤的Winnt下,則將其修改為
SQLPLUS_SYSTEMROOT=d:\\WINNT。
對于后面一項(xiàng)的修改只對Windows操作系統(tǒng)進(jìn)行,對UNIX操作系統(tǒng)則不需要。如果在Windows操作系統(tǒng)中不修改該項(xiàng),在Oracle Enterprise Manager中,連接系統(tǒng)時(shí),會提示如下的錯誤:
ORA-12560 TNS:protocol adapter error
或者
ORA-12545 Connect failed because target host or object does not exist
4、修改完成后,保存文件,退出編輯。重新連接SQL PLUS Worksheet,字符集亂碼問題得到解決,顯示正確的簡體中文字符集。
問題: 使用Oracle Instant Client 出現(xiàn) ORA-12705: Cannot access NLS data files or invalid environment specified 錯誤。
如果是Windows平臺,注冊表里 \HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 查找鍵 NLS_LANG,這個(gè)鍵由Oracle標(biāo)準(zhǔn)客戶端安裝創(chuàng)建, 值是 NA 。這個(gè)導(dǎo)致了 ORA-12705錯誤。解決方法就是改名 NLS_LANG。
Linux下 如果環(huán)境變量 NLS_LANG 值是NA 會引起 ORA-12705 錯誤,解決方法是刪除這個(gè)變量
unset NLS_LANG
可能是字符集不一致造成的,字符集有數(shù)據(jù)庫字符集和客戶端字符集,對你這種情況來說,導(dǎo)出和導(dǎo)入都要涉及,也就是說你要保證4個(gè)字符集都一致才行
exp時(shí)源數(shù)據(jù)庫字符集,客戶端字符集
imp時(shí)目標(biāo)數(shù)據(jù)庫字符集和客戶端字符集
如果你就在數(shù)據(jù)庫服務(wù)器上導(dǎo)出或者導(dǎo)入,那么你這機(jī)器既作為數(shù)據(jù)庫服務(wù)器也做導(dǎo)入導(dǎo)出客戶端
字符集的問題
如果是應(yīng)用應(yīng)用服務(wù)器連接的數(shù)據(jù)庫,查看和修改應(yīng)用服務(wù)器的字符集與oracle數(shù)據(jù)庫字符集是否一致。
如果是通過oracle客戶端(包括pl/sql developer )等連接的數(shù)據(jù)庫,查看和修改該客戶端使用的oraclehome的字符集設(shè)置,一般在注冊表中。具體根據(jù)使用的oracle客戶端查找。
應(yīng)該是你倒出或者是倒入時(shí)用錯了客戶端的字符集,或者是源庫和目標(biāo)庫的字符集本身就不兼容
分別在源庫和目標(biāo)庫查詢一下數(shù)據(jù)庫字符集:
select value$ from props$ where name like 'NLS_CHAR%';
看它們是否一致,如果不一致,基本上你就不能用導(dǎo)入的方法來在這兩庫之間遷移這個(gè)數(shù)據(jù)
如果一致,再檢查一下導(dǎo)出和導(dǎo)入所用機(jī)器的字符集(客戶端字符集),windows要看注冊表,UNIX要看操作系統(tǒng)用戶的環(huán)境變量
1,修改Oralce的編碼格式
2,修改主機(jī)的編碼格式
3,查看自己導(dǎo)入的數(shù)據(jù)是否已經(jīng)亂碼
名稱欄目:oracle如何導(dǎo)入亂碼 oracle數(shù)據(jù)庫中添加數(shù)據(jù)亂碼怎么解決
標(biāo)題URL:http://www.chinadenli.net/article6/hpipog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、全網(wǎng)營銷推廣、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站排名、用戶體驗(yàn)、網(wǎng)站維護(hù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)