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資料庫匯入匯出命令
匯出表結構 exp name password hostname db name owner username rows n file filename.dmp log exp log.log 匯入表結構 imp name password hostname db name fromuser use...
oracle 資料庫 匯入匯出命令
匯入匯出命令imp emp 1 將資料庫test完全匯出,使用者名稱system 密碼manager 匯出到d daochu.dmp中 exp system manager test file d daochu.dmp full y 2 將資料庫中system使用者與sys使用者的表匯出 exp s...
oracle資料庫匯入匯出命令
oracle資料匯入匯出imp exp 功能 oracle資料匯入匯出imp exp就相當與oracle資料還原與備份。可以在sqlplus.exe或者dos 命令列 中執行 資料匯出 1 將資料庫test完全匯出,使用者名稱system 密碼manager 匯出到d daochu.dmp中 exp...