Oracle資料庫匯入匯出命令總結

2021-07-22 14:18:45 字數 4716 閱讀 3866

oracle資料匯入匯出

imp/exp

就相當於

oracle

資料還原與備份。

exp命令可以把資料從遠端資料庫伺服器匯出到本地的

dmp檔案,

imp命令可以把

dmp檔案從本地匯入到遠處的資料庫伺服器中。利用這個功能

我們可以

從生產庫中匯出資料庫,再匯入資料庫到測試庫中。

執行環境:可以在sqlplus.exe

或者dos

(命令列)中執行,

dos中可以執行是由於在

oracle

中,安裝目錄

\ora9i\bin

被設定為全域性路徑(也可直接在系統環境變數中設定),該目錄下有

exp.exe

與imp.exe

檔案被用來執行匯入匯出。

下面是匯入匯出的例項。

資料匯出:

1 將資料庫

zxcc

完全匯出,使用者名稱

kf 密碼

zx 匯出到

d:\zxcc.dmp中

exp kf/zx@zxcc file=d:\zxcc.dmp full=y

full=y 表示全庫匯出。

full

總共有2

個可選項

yes(y)/no(n)

,預設情況下

full=no

,這時只會將該使用者下的物件匯出。

2 將資料庫

zxcc中kf

使用者與cc

使用者的表匯出

exp kf/zx@zxcc file=d:\zxcc_ur.dmp owner=(kf,cc)

full方式可以備份所有使用者的資料庫物件,包括表空間、使用者資訊等,

owner=xx

只能備份指定使用者的物件,其他使用者下的就不備份了,

exp中

full=y

和owner=xx

是不能同時使用的。

3 將資料庫

zxcc

中的表kf_operator

、kf_role匯出

exp kf/zx@zxcc file= d:\zxcc_tb.dmp tables=(kf_operator,kf_role) 

tables=xx 表示備份相關表,不能同時和

owner

、full

使用。

4 將資料庫中的表

kf_operator

中的字段

oper_id

以"00"

打頭的資料匯出

exp kf/zx@zxcc file=d:\zxcc_t.dmp tables=(kf_operator) query=\" where oper_id like '00%'\"

query主要是匯出合適條件的資料。使用該引數時,需要注意對所有作業系統保留字元都要使用轉義符號。若有括號()也需要轉義:

query=\"where dt=to_date\(\'2007-09-22\',\'yyyy-mm-dd\'\)\" 。

如果遇到條件比較繁瑣的語句,頻繁的轉義操作不僅費時,還很容易出錯。我們可以使用exp

或expdp

的parfile

引數避免

query

內容的繁瑣轉義問題。 例:

oracle dbalnp01 > cat > zxcc.par

tables=kf_operator

file=zxcc.dmp

query="where dt_time=to_date('2010-06-25','yyyy-mm-dd')" 

這時就可以盡情的再雙引號中寫條件語句了。

上面是常用的匯出,對於比較大的資料庫,我們可以對匯出檔案進行壓縮處理,可用winzip

把dmp

檔案進行壓縮。

也可以在上面命令後面加上 compress=y 

來實現。

資料的匯入:

1、將d:\zxcc.dmp 

中的資料匯入 

zxcc

資料庫中。

imp kf/zx@zxcc file=

d:\zxcc.dmp

導資料得時候,有可能報錯。為什麼?有以下主要的原因:

a. 匯入的物件(表,檢視,方法等)原本不屬於當前連線的使用者的

b. 匯入的物件在該資料庫的指定使用者下已經存在

c. 匯入的物件的原本使用者不在這個資料庫裡

對於這三個問題的處理方法如下:

a/c、所有物件全部匯入到指定的賬戶下:

imp kf_new/zx@zxcc_new file=d:\zxcc.dmp fromuser=kf touser=kf_new

其中fromuser=kf

為.dmp

檔案裡的物件的原先的

owner, touser=kf_new 

為作為匯入的物件的新的

owner.

b、忽略

/插入資料:

imp 

kf_new/zx

@zxcc_new

file=

d:\zxcc.dmp

ignore=y

其中ignore=y

告訴imp.exe

把資料直接插入到相應物件(並且如果匯入的物件裡面有其他的物件,如約束,索引等,會在資料插入後被建立)。

2、將d:\zxcc_tb.dmp

中的表tb_operator 匯入

imp kf/zx@zxcc  file=d:\zxcc_tb.dmp  tables=(tb_operator)

忽略載入約束

有時候導資料進來的時候,我們不需要把它的約束,比如一些外來鍵約束等都導進來,可以加上引數constraints=n

不載入索引(比如唯一性的索引),可以加上引數indexs=n

只載入結構,不載入資料,如果只要表的結構等定義(約束,觸發器),而不要裡面的資料,可以加上引數rows=n

對於上述操作登陸操作的使用者需是管理員,如果不是管理員,而是普通使用者,那麼這個使用者必須有建立刪除物件的權利,物件可能包括表,檢視,方法,儲存過程等等常見的物件。為什麼「可能」包括?因為這個視匯入匯出的時候是否涉及相關型別的物件而定。 

imp kf/zx@zxcc_new file=d:\zxcc.dmp fromuser=kf touser=kf_new ignore=y

基本上面的匯入匯出夠用了。不少情況要先是將表徹底刪除,然後匯入。

注意:

(1)、操作者要有足夠的許可權,許可權不夠會有提示。 (2

)、資料庫鏈結正常,可以用

tnsping zxcc 

來檢測資料庫

zxcc

能否連上。 (3

)、匯入

/匯出資料庫時注意字符集。可能會出現匯出

/匯入時資料庫字符集不一致而報錯。

oracle資料庫其他常用命令:

1、給使用者增加匯入資料許可權的操作

第一,啟動sql*puls

第二,以管理員(dba

)使用者登陸

第三,create user 

使用者名稱 

identified by 

密碼 (如果已經建立過使用者,這步可以省略)

第四,>

grant create user

,drop user

,alter user

,create any view

,drop any view

,exp_full_database

,imp_full_database

,dba

,resource

,create session to

使用者名字;

第五, 

執行cmd

進入dmp

檔案所在的目錄,

imp userid=管理員使用者名稱

/密碼 

full=y file= filename.dmp

或者 imp userid=

管理員使用者名稱

/密碼 

full=y file=filename.dmp

2、oracle 

不允許直接改變表的擁有者

, 利用

export/import

可以達到這一目的.

先建立.par

檔案()

然後,使用時命令如下:imp parfile=/filepath/import9.par

例 import9.par 

內容如下:

fromuser=user       

touser=user_new     (注:把錶的擁有者由

fromuser

改為touser

,fromuser

和touser

的使用者可以不同)          

rows=y

indexes=y

grants=y

constraints=y

buffer=409600

file==/filepath/***x.dmp

log==/filepath/import_log.log

Oracle資料庫匯入匯出命令

匯出表結構 exp name password hostname db name owner username rows n file filename.dmp log exp log.log 匯入表結構 imp name password hostname db name fromuser use...

oracle 資料庫 匯入匯出命令

匯入匯出命令imp emp 1 將資料庫test完全匯出,使用者名稱system 密碼manager 匯出到d daochu.dmp中 exp system manager test file d daochu.dmp full y 2 將資料庫中system使用者與sys使用者的表匯出 exp s...

oracle資料庫匯入匯出命令

oracle資料匯入匯出imp exp 功能 oracle資料匯入匯出imp exp就相當與oracle資料還原與備份。可以在sqlplus.exe或者dos 命令列 中執行 資料匯出 1 將資料庫test完全匯出,使用者名稱system 密碼manager 匯出到d daochu.dmp中 exp...