oracle 資料匯入匯出

2021-08-10 15:06:27 字數 2592 閱讀 4095

最近用到oracle匯出匯入資料,在網上看了別人的一些文章,總結如下:

oracle匯出匯出有兩中方式:一、利用exp imp匯出匯入;二、利用oracel資料幫浦expdp impdp匯出匯入。

一、利用exp imp匯出匯入

exp imp 語法如下:

exp:

1) 將資料庫orcl完全匯出

exp system/manager@orcl file=d:\orcl_bak.dmp full=y

2) 將資料庫中system使用者的表匯出

exp system/manager@orcl file=d:\system_bak.dmp owner=system

3) 將資料庫中表table1,table2匯出

exp system/manager@orcl file=d:\table_bak.dmp tables=(table1,table2)

4) 將資料庫中的表customer中的字段mobile以"139"開頭的資料匯出

exp system/manager@orcl file=d:\mobile_bak.dmp tables=customer query=\"where mobile like '139%' \"

imp:

1) 將備份檔案bak.dmp匯出資料庫

imp system/manager@orcl file=d:\bak.dmp

如果資料表中表已經存在,會提示錯誤,在後面加上ignore=y就可以了。  

2) 將備份檔案bak.dmp中的表table1匯入

imp system/manager@orcl file=d:\bak.dmp tables=(table1)

exp imp匯出匯入資料方式的好處是只要你本地安裝了oracle客戶端,你就可以將伺服器中的資料匯出到你本地計算機。同樣也可以將dmp檔案從你本地匯入到伺服器資料庫中。但是這種方式在oracle11g版本中會出現乙個問題:不能匯出空表。oracle11g新增了乙個引數deferred_segment_creation,含義是段延遲建立,預設是true。當你新建了一張表,並且沒用向其中插入資料時,這個表不會立即分配segment。

解決辦法:

1、設定deferred_segment_creation引數為false後,無論是空表,還是非空表,都分配segment。

在sqlplus中,執行如下命令:

sql>alter system set deferred_segment_creation=false;

檢視:sql>show parameter deferred_segment_creation;

該值設定後,只對後面新增的表起作用,對之前建立的空表不起作用,並且注意要重啟資料庫讓引數生效。

2、使用 allocate exten

使用 allocate exten可以為資料庫物件分配extent,語法如下:

alter table table_name allocate extent

構建對空表分配空間的sql命令:

sql>select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0

批量生成要修改的語句。

然後執行這些修改語句,對所有空表分配空間。

此時用exp命令,可將包括空表在內的所有表匯出。

二、利用expdp impdp匯出匯入

在oracle10g中exp imp被重新設計為oracle data pump(保留了原有的 exp imp工具)

資料幫浦與傳統匯出匯入的區別;

1) exp和imp是客戶端工具,他們既可以在客戶端使用,也可以在服務端使用。  

2) expdp和impdp是服務端工具,只能在oracle服務端使用。

3) imp只適用於exp匯出檔案,impdp只適用於expdp匯出檔案。

expdp匯出資料:

1、為輸出路徑建立乙個資料庫的directory物件。

create or replace directory dumpdir as 'd:\';

可以通過:select * from dba_directories;檢視。

2、給將要進行資料匯出的使用者授權訪問。

grant read,write on directory dumpdir to test_expdp;

3、將資料匯出

expdp test_expdp/test_expdp directory=dumpdir dumpfile=test_expdp_bak.dmp logfile=test_expdp_bak.log schemas=test_expdp

注意:這句話在cmd視窗中執行,並且最後不要加分號,否則會提示錯誤。因為這句話是作業系統命令而不是sql。

impdp匯入資料:

1、給將要進行資料匯入的使用者授權訪問。

grant read,write on directory dumpdir to test_impdp;

2、將資料匯入

impdp test_impdp/impdp directory=dumpdir dumpfile=test_expdp_bak.dmp remap_schema=test_expdp:test_impdp

oracle資料匯入匯出

語法 imp userid password 資料庫全域性名 file dmp檔案的目錄 其它引數 獲取幫助,敲入 imp help y import常用的引數 1 file 指定匯入檔名 fromuser 允許匯入指定的使用者擁有的表 full full y時,匯入dmp檔案中所有的事物 igno...

Oracle資料匯入匯出

資料庫的維護過程,難免遇到一些表的備份和恢復工作。為了方便起見,我將這些重複的工作整理成了執行在windows上的批處理,和執行在aix伺服器上的kshell指令碼。指令碼的作業內容就是,指定具體的表集合,分檔案逐表備份和恢復。如果是經常性的指定的固定表的話,可以修改以陣列方式的指令碼。如果是經常改...

oracle 資料匯出匯入

資料庫的匯出匯入 匯出表步驟 1 匯出表結構與資料 2 匯出序列 3 匯出觸發器 4 匯出檢視 匯出表工具 plsql developer 設定環境變數 變數名 nls lang 變數值 american america.zhs16gbk 這裡主要是解決資料庫的字符集問題,根據資料庫的字符集設定,保...