oracle資料匯出匯入(exp/imp)

tandongmu發表於2018-05-30

1.本地資料庫匯入匯出

1.匯出

(執行—cmd中操作)
exp 使用者名稱/密碼@資料庫例項名file=本地存放路徑
eg: exp jnjp/jnjp@ORCL file=C:/jnjp.dmp

2.匯入

imp 使用者名稱/密碼@資料庫例項名file=本地資料庫檔案存放路徑full=y ignore=y
eg: imp jnjp/jnjp@orcl file=E:jnjp.dmp full=y ignore=y

2.遠端資料庫匯入匯出

1.匯出 

exp 使用者名稱/密碼@ip地址/資料庫例項名file=本地存放路徑
eg: exp jnjp/jnjp@10.15.135.18/orcl file=C:/jnjp.dmp

2.匯入

imp 使用者名稱/密碼@ip地址/資料庫例項名file=本地資料庫檔案存放路徑full=y

3.EXP的所有引數(括號中為引數的預設值)

USERID 使用者名稱/口令 如:USERID=duanl/duanl
FULL 匯出整個資料庫 (N)
BUFFER 資料緩衝區的大小
OWNER 所有者使用者名稱列表,你希望匯出哪個使用者的物件,就用owner=username
FILE 輸出檔案 (EXPDAT.DMP)
TABLES 表名列表 ,指定匯出的table名稱,如:TABLES=table1,table2
COMPRESS 匯入一個extent (Y)
RECORDLENGTH IO 記錄的長度
GRANTS 匯出許可權 (Y)
INCTYPE 增量匯出型別
INDEXES 匯出索引 (Y)
RECORD 跟蹤增量匯出 (Y)
ROWS 匯出資料行 (Y)
PARFILE 引數檔名,如果你exp的引數很多,可以存成引數檔案.
CONSTRAINTS 匯出約束 (Y)
CONSISTENT 交叉表一致性
LOG 螢幕輸出的日誌檔案
STATISTICS 分析物件 (ESTIMATE)
DIRECT 直接路徑 (N)
TRIGGERS 匯出觸發器 (Y)
FEEDBACK 顯示每 x行(0)的進度
FILESIZE 各轉儲檔案的最大尺寸
QUERY 選定匯出表子集的子句
下列關鍵字僅用於可傳輸的表空間
TRANSPORT_TABLESPACE 匯出可傳輸的表空間後設資料 (N)
TABLESPACES 將傳輸的表空間列表

4.IMP的所有引數(括號中為引數的預設值)

USERID 使用者名稱/口令
FULL 匯入整個檔案 (N)
BUFFER 資料緩衝區大小
FROMUSER 所有人使用者名稱列表
FILE 輸入檔案 (EXPDAT.DMP)
TOUSER 使用者名稱列表
SHOW 只列出檔案內容 (N)
TABLES 表名列表
IGNORE 忽略建立錯誤 (N)
RECORDLENGTH IO 記錄的長度
GRANTS 匯入許可權 (Y)
INCTYPE 增量匯入型別
INDEXES 匯入索引 (Y)
COMMIT 提交陣列插入 (N)
ROWS 匯入資料行 (Y)
PARFILE 引數檔名
LOG 螢幕輸出的日誌檔案
CONSTRAINTS 匯入限制 (Y)
DESTROY 覆蓋表空間資料檔案 (N)
INDEXFILE 將表/索引資訊寫入指定的檔案
SKIP_UNUSABLE_INDEXES 跳過不可用索引的維護 (N)
ANALYZE 執行轉儲檔案中的 ANALYZE語句(Y)
FEEDBACK 顯示每 x行(0)的進度
TOID_NOVALIDATE 跳過指定型別 id的校驗
FILESIZE 各轉儲檔案的最大尺寸
RECALCULATE_STATISTICS 重新計算統計值 (N)
下列關鍵字僅用於可傳輸的表空間
TRANSPORT_TABLESPACE 匯入可傳輸的表空間後設資料 (N)
TABLESPACES 將要傳輸到資料庫的表空間
DATAFILES 將要傳輸到資料庫的資料檔案
TTS_OWNERS 擁有可傳輸表空間集中資料的使用者

5.EXP常用選項

1.FULL

這個用於匯出整個資料庫,在ROWS=N一起使用時,可以匯出整個資料庫的結構。例如:
exp userid=test/test file=./db_str.dmp log=./db_str.log full=y rows=n compress=y direct=y

注:在oracle10g中,userid這個是可以不用寫的直接寫 使用者名稱/密碼 就可以了像這樣:
exp test/test file=./db_str.dmp log=./db_str.log full=y rows=n compress=y direct=y

2.OWNER和TABLE

這兩個選項用於定義EXP的物件。OWNER定義匯出指定使用者的物件;TABLE指定EXP的table名稱,例如:
exp userid=test/test file=./db_str.dmp log=./db_str.log owner=duanl
注:有的時候我們可能會遇到只匯出單表的情況,下面這種方法可以幫你解決問題
exp userid=test/test file=./db_str.dmp log=./db_str.log table=nc_data,fi_arap

3.FILE和LOG

這兩個引數分別指定備份的DMP名稱和LOG名稱,包括檔名和目錄,例子見上面。

4.COMPRESS

COMPRESS 引數不壓縮匯出資料的內容。用來控制匯出物件的storage語句如何產生。預設值為Y,使用預設值,物件的儲存語句的init extent等於當前匯出物件的extent的總和。推薦使用COMPRESS=N。

6.IMP常用選項

1、FROMUSER和TOUSER

使用它們實現將資料從一個SCHEMA中匯入到另外一個SCHEMA中。例如:假設我們做exp時匯出的為test的物件,現在我們想把物件匯入使用者:
imp userid=test1/test1 file=expdat.dmp fromuser=test1 touser=test1

2、IGNORE、GRANTS和INDEXES

其中IGNORE引數將忽略表的存在,繼續匯入,這個對於需要調整表的儲存引數時很有用,我們可以先根據實際情況用合理的儲存引數建好表,然後直接匯入資料。而GRANTS和INDEXES則表示是否匯入授權和索引,如果想使用新的儲存引數重建索引,或者為了加快到入速度,我們可以考慮將INDEXES設為N,而GRANTS一般都是Y。例如:imp userid=test1/test1 file=expdat.dmp fromuser=test1 touser=test1 indexes=N

7.匯入匯出例項

下面介紹的是匯入匯出的例項,嚮匯入匯出看例項基本上就可以完成,因為匯入匯出很簡單。

1.資料匯出:

1.1將資料庫TEST完全匯出,使用者名稱system密碼manager匯出到D:daochu.dmp中
exp system/manager@TEST file=d:daochu.dmp full=y
1.2 將資料庫中system使用者與sys使用者的表匯出
exp system/manager@TEST file=d:daochu.dmp owner=(system,sys)
1.3 將資料庫中的表table1、table2匯出
exp system/manager@TEST file=d:daochu.dmp tables=(table1,table2)
1. 4 將資料庫中的表table1中的欄位filed1以”00″打頭的資料匯出
exp system/manager@TEST file=d:daochu.dmp tables=(table1) query=” where filed1 like `00%`”

2.資料的匯入:

2.1 將D:daochu.dmp中的資料匯入TEST資料庫中。
imp system/manager@TEST file=d:daochu.dmp
上面可能有點問題,因為有的表已經存在,然後它就報錯,對該表就不進行匯入。
在後面加上 ignore=y 就可以了。
2. 2 將d:daochu.dmp中的表table1匯入
imp system/manager@TEST file=d:daochu.dmp tables=(table1)
基本上上面的匯入匯出夠用了。不少情況我是將表徹底刪除,然後匯入。

3.匯出、匯入萬用字元的使用:

想匯出格式為TABLE_1,TABLE_2,TABLE_3這樣的表,這樣的表在庫中共有300張,難道要一張張的寫語句?太費神了吧,不用擔心,oracle提供萬用字元可以使用來滿足這樣的需求:
exp system/test@192.168.1.198/orcl file=d:exp_test.dmptables=TABLE_% log=exp_test.log

相關文章