|
在上一篇 oracle export 命令使用淺解 的文章中介紹了 oracle 的 exp 命令用來(lái)導(dǎo)出數(shù)據(jù),導(dǎo)出的二進(jìn)制文件如何使用,怎樣才能導(dǎo)入到數(shù)據(jù)庫(kù)中呢?答案就是通過(guò) oracle 的 imp 命令。 該命令的很多參數(shù)和上一篇中介紹的 exp 是相對(duì)應(yīng)的,所以兩篇可以對(duì)比著來(lái)看。 1. 認(rèn)識(shí) imp 命令 Imp 命令可以通過(guò)輸入各種參數(shù)來(lái)控制導(dǎo)出的運(yùn)行方式,執(zhí)行參數(shù)時(shí)格式如下: IMP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN) ,例如 IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N 。要想查看 imp 支持的所有參數(shù),可以通過(guò)執(zhí)行 Imp help=y 來(lái)查看參數(shù)的詳細(xì)情況。雖說(shuō)是詳細(xì)情況,但是等你查看了就知道了,其實(shí)一點(diǎn)都不詳細(xì),要不然我也就沒(méi)必要再寫(xiě)這邊筆記博文了。 2. 參數(shù)詳解 USERID : 用戶名/ 口令。該參數(shù)在imp 命令中位置必須是第一個(gè), 用戶名 / 口令。格式為 用戶名 / 密碼 @ 待連接的數(shù)據(jù)庫(kù)。具體參考第三節(jié)中示例。 BUFFER : 數(shù)據(jù)緩沖區(qū)大小。定義了插入數(shù)據(jù)的緩沖區(qū)的大小,單位是byte, 該值越大, Import 進(jìn)程執(zhí)行插入次數(shù)就越少,從而提高導(dǎo)入效率。BUFFER 的大小取決于系統(tǒng)應(yīng)用、數(shù)據(jù)庫(kù)規(guī)模,通常來(lái)說(shuō),設(shè)為百兆就足夠了。 FROMUSER : 所有者用戶名列表。待導(dǎo)入的二進(jìn)制文件的中的shcema 信息,如果導(dǎo)出的文件包含多個(gè)用戶,那么該參數(shù)設(shè)定時(shí)為多個(gè)用戶的子集,或者全集。如果指定了文件包含用戶中的一部分,則本次導(dǎo)入操作只會(huì)導(dǎo)入已經(jīng)指定的部分用戶的數(shù)據(jù)。 TOUSER: 用戶名列表。與FROMUSER 對(duì)應(yīng)的參數(shù),指定導(dǎo)入的目標(biāo)用戶列表。因?yàn)檫@個(gè)參數(shù)的存在,可以使我們輕松的把一個(gè)用戶下的數(shù)據(jù)導(dǎo)入到另一個(gè)用戶下,只需執(zhí)行一個(gè)相應(yīng)的touser 就可以了。前提是該用戶確實(shí)存在。 FILE : 輸入文件。待導(dǎo)入的二進(jìn)制文件,如果不指定的話,默認(rèn)采用EXPDAT.DMP 。如果導(dǎo)出時(shí)設(shè)定了最大轉(zhuǎn)儲(chǔ)文件大小的話,我們得到的可能是多個(gè)文件,這時(shí)候可以指定多個(gè)文件名,如:FILE= (file1.dmp,file2.dmp ……)。 TABLES : 表名列表。指定要導(dǎo)入的表名??梢允嵌鄠€(gè)表名,多個(gè)表名時(shí)采用如下格式:tables=(test_tab_1,test_tab_2) 。如果是在linux 或者unix 下的話,括號(hào)需要進(jìn)行轉(zhuǎn)義。如:tables=\(test_tab_1,test_tab_2\) 。 IGNORE : 忽略創(chuàng)建錯(cuò)誤。默認(rèn)為N ,及不會(huì)忽略創(chuàng)建時(shí)的錯(cuò)誤。比如在導(dǎo)入一個(gè)表時(shí),目標(biāo)表已經(jīng)存在,那樣就會(huì)導(dǎo)入失敗,并提示錯(cuò)誤。如果我們將IGNORE=Y ,這樣就不會(huì)出現(xiàn)該錯(cuò)誤了,但是你就得做好表被追加數(shù)據(jù)的心理準(zhǔn)備了。即使重復(fù)了,也不會(huì)報(bào)錯(cuò),會(huì)直接導(dǎo)入到表中。 RECORDLENGTH: IO 記錄的長(zhǎng)度。指定文件的byte 長(zhǎng)度。 INDEXES: 是否導(dǎo)入索引。 COMMIT : 提交數(shù)組插入。默認(rèn)值是N ,表示導(dǎo)完一張表之后進(jìn)行提交。如果設(shè)置為Y ,則每次緩沖區(qū)滿了之后就進(jìn)行提交一次。這樣可以減少占用的回滾段大小。建議設(shè)置為Y. ROWS: 導(dǎo)入數(shù)據(jù)行。默認(rèn)為Y ,即導(dǎo)入表中的記錄。設(shè)置為N 的話,則只會(huì)導(dǎo)入表結(jié)構(gòu)。 LOG : 屏幕輸出的日志文件。 CONSTRAINTS: 是否導(dǎo)入文件中包含的表的constraint 內(nèi)容。 GRANTS : 是否導(dǎo)入權(quán)限。 STATISTICS: 統(tǒng)計(jì)信息。統(tǒng)計(jì)導(dǎo)入過(guò)程的相關(guān)信息,可選項(xiàng)包括 ALWAYS , NONE , SAFE , RECALCULATE 。 以上只是列舉了imp 的基本常用參數(shù)。要午休了,就寫(xiě)這些吧,基本也就夠了。 3. 舉例 下面是一個(gè)導(dǎo)入命令的示例,可以參考一下。如下: Java代碼 imp scott/scottpwd@mydb file=/data/test.dmp.tmp buffer=100000 fromuser=user1 touser=user1 commit=Y tables=\(etl_test_0,etl_test_1\) ignore=Y indexes=N rows=Y grants=Y constraints=Y log=/data/imp.log |
|
|
來(lái)自: aaie_ > 《OracleDayDayUp》