Oracle資料匯入匯出imp exp

2021-07-25 10:52:13 字數 4847 閱讀 9681

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 資料備份匯入imp匯出exp

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

Oracle資料庫匯出 exp 匯入 imp

exp damp 檔案,方便資料遷移。但這個過程不能太長,以免回滾段和聯機日誌消耗完 imp 將exp dmp檔案上載到資料庫內。buffer 上載資料緩衝區,以位元組為單位,預設依賴作業系統 commit 上載資料緩衝區中的記錄上載後是否執行提交 feeback 顯示處理記錄條數,預設為0,即不顯...

oracle資料庫匯出 exp 匯入 imp)

單錶備份 前提庫的結構是一樣的 匯出 exp 使用者名稱 密碼 連線字串 grants y tables stu file c 檔名.dmp 匯入 imp 使用者名稱 密碼 連線字串 ignore y tables stu full n file c 檔名.dmp 其中stu是你要的表名 全庫導 匯...