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 資料備份匯入imp匯出exp
資料的匯出 1 將資料庫test完全匯出,使用者名稱system 密碼manager 匯出到d daochu.dmp中 exp system manager test file d daochu.dmp full y 2.將資料庫中system使用者與sys使用者的表匯出 exp system ma...
Oracle資料庫匯出 exp 匯入 imp
exp damp 檔案,方便資料遷移。但這個過程不能太長,以免回滾段和聯機日誌消耗完 imp 將exp dmp檔案上載到資料庫內。buffer 上載資料緩衝區,以位元組為單位,預設依賴作業系統 commit 上載資料緩衝區中的記錄上載後是否執行提交 feeback 顯示處理記錄條數,預設為0,即不顯...
oracle資料庫匯出 exp 匯入 imp)
單錶備份 前提庫的結構是一樣的 匯出 exp 使用者名稱 密碼 連線字串 grants y tables stu file c 檔名.dmp 匯入 imp 使用者名稱 密碼 連線字串 ignore y tables stu full n file c 檔名.dmp 其中stu是你要的表名 全庫導 匯...