一、背景介紹
9i,10g,11g 支援export 與 import工具,以後的版本將不在支援。建議改用資料幫浦,資料幫浦是export 與 import工具加強。
export 與 import的操作是針對*.dmp檔案的,是oracle專有的二進位制格式。適合從oracle匯入到oracle。
export 與 import對於大資料量(上g) 的匯入匯出已不適合。
sql loader這種匯入工具是針對文字檔案的。適合從文字檔案匯入到oracle。是執行insert語句的插入原理
direct load工具,直接載入,是從oracle塊對oracle塊的導資料,速度很多,適合從oracle匯入到oracle。
二、使用export 與 import工具 對資料匯入匯出
工具在oracle bin 目錄下的 exp.exe , imp.exe 這兩個工具
可在客戶端或服務端執行
2.1、匯出*.dmp檔案
2.1.1 exp的四種模式:
1、表模式,用於匯出某張表。
2、使用者模式,用於匯出某使用者的schema。
3、表空間模式,用於匯出表空間。表空間的是由資料檔案組成的,把資料檔案從當前庫copy到目標庫,在用exp工具從當前庫匯出這個表空間的字典資訊再匯入到目標庫,分兩步走。限制較多。
4、資料庫模式。用於匯出整個資料庫,不適合大資料量。
2.1.2 匯出例子
匯出1--使用者模式
exp 使用者名稱/密碼@網路服務名 file=d:/oralce_bak_20101001.dmp owner=使用者名稱 log=d:/exp.log direct=y
file:匯出的*.dmp檔案輸出到指定目錄
owner:匯出哪個使用者的schema
log:日誌檔案輸了到指定目錄 (可選)
direct:y表示直接匯出 (可選) 速度比一般匯出快一倍以上,預設n
rows:y表示同時匯出資料 (可選),預設值y,n表示只導表結構
匯出2--表模式
exp 使用者名稱/密碼@網路服務名 file=20101001.dmp tables=表名1,表名2 rows=y log=exp.log
file:匯出的*.dmp檔案輸出到當前目錄
tables:指定匯出的表名,可以是多個,用逗號分隔
rows:y表示同時匯出資料 (可選),預設值y,n表示只導表結構
log:日誌檔案輸了到當前目錄 (可選)
匯出3--資料庫模式
exp 使用者名稱/密碼@網路服務名 file=20101001.dmp full=y rows=y log=exp.log grants=y
file:匯出的*.dmp檔案輸出到當前目錄
full:匯出整個庫
rows:y表示同時匯出資料 (可選),預設值y ,n表示只導庫結構
log:日誌檔案輸了到當前目錄 (可選)
grants: y表示匯出授權 (可選)
2.1.3 匯出時的字符集處理
在源資料庫與目標資料庫字符集不同時,會發生字符集轉換
四個地方的字符集要先整清楚:
1、源資料庫的字符集
2、exp工具所在環境的字符集,你很可能在windows xp上執行exp匯出遠端oracle資料庫的資料。
3、imp工具所在環境的字符集,你很可能在windows xp上執行imp向遠端的oracle資料庫匯入資料。
4、目標資料庫的字符集
按最壞的情況計算,上面4個地方的字符集都不一樣,最多會發生3次字符集的轉換。轉換時字符集不相容就會發生亂碼。
檢視資料庫的字符集,資料庫是英文linux系統:
select * from nls_database_parameters;
在查詢結果中找三個地方:
nls_language -- american
nla_territory -- america
nls_characterest -- al32utf8
說明是:美國 al32utf8
檢視exp,imp工具所在環境的字符集,是windows xp系統:
看登錄檔:hkey_local_machine/software/oracle/可能有多個oracle,一般是key_oraclient10g_home1 到這裡,看右側,找nls_lang項的值是:簡體中文zhs16gbk。
說明是: 簡體中文zhs16gbk
由於上面兩處字符集不同,在匯出匯入時,共會發生兩次字符集轉換,如果想避免轉換,做如下修改:
修改exp,imp工具所在環境的字符集:
在windows xp命令列輸入:set nls_lang=american_america.al32utf8
與資料庫的字符集一致,是上面英文linux系統中資料庫字符集的三個名稱的組合。
如果源資料庫與目標資料庫字符集不同,但exp工具與源資料庫字符集一致, imp工具與目標資料庫符集一致, 那麼會在imp讀*.dmp檔案時發生字符集轉換。
如果源資料庫與目標資料庫字符集不同,但exp,imp工具與源資料庫字符集一致, 那麼會在目標資料庫接收*.dmp時發生字符集轉換。
2.1.4 匯出的許可權
使用者預設可匯出自己的表,想匯出別人的表或schema,要有exp_full_database許可權
grant exp_full_database to 使用者名稱
2.2匯入*.dmp檔案
2.2.1 imp的四種模式:
與exp工具一樣有四種模式,詳見上面的exp的四種模式。
2.2.2 匯入例子
匯入1--使用者模式
imp 使用者名稱/密碼@網路服務名 file=d:/oralce_bak_20101001.dmp ignore=y fromuser=從哪個使用者 touser=匯入到哪個使用者 tables=表名1,表名2
file:指明*.dmp檔案位置
ignore:y:表已存在就不用再建立表了直接匯入。 n表示建立表再匯入。 預設為n,(可選)
fromuser:從哪個使用者來 (可選)
touser:匯入到哪個使用者 (可選)
tables:指定匯入的表名,可以是多個,用逗號分隔 (可選)
匯入2--表模式
imp 使用者名稱/密碼@網路服務名 tables=表名1,表名2 rows=y file=2010.dmp
tables:指定匯入的表名,可以是多個,用逗號分隔
rows:y表示同時匯出資料 (可選),預設值y,n表示只導表結構
file:匯入當前目錄的*.dmp檔案到資料庫
imp 使用者名稱/密碼@網路服務名 file=d:/oralce_bak_20101001.dmp show=y
show: y表示不匯入,只看看。可以看看*.dmp是從哪個版本的庫匯出來的,好像也能看字符集。
使用dba身份匯入,空格部分要加單引號
imp \'使用者名稱/密碼@網路服務名 as sysdba\' tables=表名1,表名2 rows=y file=2010.dmp
2.2.4 匯入的許可權
使用者預設可匯入自己的表,想匯入別人的表或schema,要有exp_full_database許可權
grant exp_full_database to 使用者名稱
三、使用資料幫浦 對資料匯入匯出
資料幫浦是export 與 import工具加強,工具在oracle bin 目錄下的 expdp.exe , impdp.exe 兩個工具
只能在服務端執行
Oracle 資料庫 匯入匯出
匯入匯出時要,通過 執行 進行到oracle的安裝目錄的 bin 目錄下導 例如 d oracle product 10.1.0 db 1 bin 匯出分三種 匯出 表 方案 資料庫 1.1.1 匯出自己的表 說明 使用者 密碼 資料庫例項 表名 可多個 檔案路徑 exp userid scott ...
oracle資料庫匯入匯出
用工具匯入 匯出 資料 工具 t 匯出表 x 工具 t 匯出表 x 所選執行檔案位置 e oracle product 10.2.0 db 1 bin imp.exe exp.exe 命令匯入匯出 oracle匯入dmp檔案命令 1 dmp檔案中的資料匯入資料庫 1.首先進入cmd命令視窗 2.執行...
Oracle資料庫匯入匯出
我們經常會在資料備份或環境移至的時候用到oracle的匯入匯出 下面我們來詳細看一下匯入匯出的步驟 1.命令列下匯出dmp檔案 資料匯出,可以帶版本 expdp bp oracle bp oracle orcl directory dump dir dumpfile bp oracle.dmp ve...