一、問題:這個是因為匯出端的資料庫編碼和匯入端的資料庫編碼不一致,我的匯出端a是zhs16gbkunix這種編碼格式,而匯入端b的是al32utf8這種編碼格式,從而如果從a匯出dmp檔案,再匯入到b端資料庫時,會報錯出編碼不一致,資料不能完整的匯入進去
二、分析:使用exp命令匯出的dmp檔案的編碼會受到兩個原因影響,乙個是a端資料庫的編碼,查詢sql:
select * from nls_database_parameters;
這個會影響匯出dmp檔案的資料內容,另乙個是a端的系統編碼,即系統變數中的nls_lang引數值影響,如果nls_lang為空,那麼匯出的檔案編碼會預設為資料庫的編碼,設定nls_lang值方法:
1.windows中,一次性設定,即在匯入的cmd視窗中直接設定
set nls_lang=american_america.al32utf8
2.windows中,直接設定環境變數:新增系統的(非某個使用者)環境變數
nls_lang=american_america.al32utf8
3.windows中,修改登錄檔:oracle的nls_lang為american_america.al32utf8;
使用imp匯入時,目標dmp檔案的編碼會影響匯入結果,這樣就需要設定b端的系統編碼,同上;
而資料庫的編碼不能夠輕易去改,要不會將已有的資料丟失,這裡也會有乙個問題,不同的資料庫編碼,會對字元(特指中文)的字段長度定義不一致,匯入的時候會出現有的記錄因欄位過長而不能匯入,這是正常的(解決辦法:修改字段長度,重新匯出匯入);
oracle exp 匯出資料報 12520 錯誤
上面的報錯很明顯是資料庫的服務型別導致的。伺服器型別包括兩種 專有伺服器模式和共享伺服器模式。在tnsnames.ora中,下面是我本機的,本機的服務是專有伺服器模式 orcl description address list address protocol tcp host zt8b0dc9aw...
oracle exp匯出與imp匯入
通過exp匯出與imp匯入進行資料的備份轉移 exp命令 1exp username psw test file d test.dmp full y 2exp use rname psw test file d test.dmp owner ly 3exp username psw test fil...
oracle exp匯出時報EXP 00091錯
在linux系統上用exp命令匯出oracle資料時,報exp 00091錯誤,但最終也成功匯出了。在網上查後,有人認為這樣是由於exp的環境變數與資料庫不一至造成的,但匯出後資料是沒問題的。為了避免報此類錯,可以採取以下措施 登入資料庫,用 select from nls database par...