Oracle匯入dmp檔案亂碼解決案例

2021-10-22 12:12:57 字數 2629 閱讀 1881

說明:

本案例在linux伺服器端匯入dmp檔案,在windows客戶端使用pl/sql develop進行資料查詢操作。因此步驟比較簡單,主要步驟如下:

0)確認dmp檔案字符集

1)修改客戶端所在機器的字符集為對應字符集 utf8/16gbk

2)通過 imp 匯入dmp檔案

3)新增 windows 使用者環境變數指定字符集從資料庫匯出表的時候,會根據作業系統的字符集,儲存成指定格式的dmp檔案,因此,當我們拿到乙個dmp檔案,應該首先分析其字符集型別。

由於dmp檔案都比較大,因此可以上以下這個網進行資料型別檢視:

開啟對應的dmp檔案,發現其為0369(由於刪除了原來的案例中的dmp檔案,用乙個zhs16gbk的檔案截圖,對應的0354則判斷字符集為zhs16gbk

因此,通過oracle語句查詢,可以知道該dmp檔案的字符集為al32utf8

說明:因為oracle的imp命令只有oracle使用者能使用,因此需要切換至oracle使用者。

可以看到,依次執行以上命令,字符集改為了american_america.utf8

匯入前,需要做兩個事情:

1)建立你要匯入的使用者

create

user test_user identified by

123;

grant dba to test_user ;

2)將你要匯入的dmp檔案上傳到伺服器的指定資料夾。

我這裡放的路徑如下:

/home/oracle/test/test.dmp
然後,直接在oracle使用者下,執行linux命令

(注意,不是連線 sqlplus 執行 imp 命令)

imp your_user_name/your_password  file=/home/oracle/test/test.dmp full=y ignore=y;
your_user_name/your_password這裡輸入對應使用者的使用者名稱和密碼

file=你的檔案位置

這時,資料庫會執行匯入,等待即可。

關於 imp / exp 以及資料幫浦介紹 可參考以下文章檢查資料是否匯入

啟動 sqlplus ,登入對應的使用者

[oracle@localhost ~]$ sqlplus / as sysdba
sql

> conn your_username

enter password:

connected.

這時候,可以查詢對應使用者下的表:

select

*from dba_tables t where t.owner =

'test_user'

;

這裡使用者名稱 test_user 記得用大寫,不管你建立的物件是小寫大寫,oracle中物件儲存一律用大寫。

看到表,就可以查詢對應的表了。

如果在 sqlplus中查詢的顯示的太難看,可以試試 set linesize 1000 ;由於我們運算元據庫都是使用 pl/sql developer 在windows上操作的多,因此,需要在 windows上配置環境變數,使其不顯示亂碼

至此,utf8格式的dmp檔案匯入資料庫成功,且在客戶端查詢時,資料不再為亂碼。

更多操作環境不同,或者字元編碼不同,會增加資料匯入的難度。具體問題需要具體分析。

沒有分析自己的操作環境和資料庫情況,直接用這套方法去做大概率是不能解決問題的。

oracle 匯入 dmp檔案

建立使用者 第一步,進入dos下,輸入sqlplus nolog,登陸sqlplus 第二步,已本地管理員身份連線oracle,conn as sysdba 第三步,建立表空間 create tablespace project datafile f oracle project.dbf size ...

oracle匯入dmp檔案

昨天做了個簡單的oracle匯入dmp檔案,現將經驗總結如下 第一,客戶端如果不在伺服器所在的機器上就不具備匯入許可權。要匯入必須在伺服器端用pl sql等客戶端工具或者直接在命令列中匯入。eg imp username psw databaseninstance file d tobeimport...

dmp檔案匯入oracle

1.建立表空間供使用者使用 create tablespace crmtbs datafile d oracle oradata orcl crmtbs.dbf size 200m autoextend on next 10m maxsize unlimited 2.建立使用者並賦予許可權 crea...