最近用到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 這裡主要是解決資料庫的字符集問題,根據資料庫的字符集設定,保...