Oracle資料庫的匯入匯出

2021-08-09 15:55:28 字數 3930 閱讀 5802

一、背景介紹

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:/***x.dmp owner=使用者名稱 log=d:/***x.log direct=y

file:匯出的*.dmp檔案輸出到指定目錄

owner:匯出哪個使用者的schema 

log:日誌檔案輸了到指定目錄 (可選)

direct:y表示直接匯出 (可選) 速度比一般匯出快一倍以上,預設n

rows:y表示同時匯出資料 (可選),預設值y,n表示只導表結構

匯出2--表模式

exp 使用者名稱/密碼@網路服務名 file=d:/***x.dmp tables=表名1,表名2 rows=y  log=d:/***x.log

file:匯出的*.dmp檔案輸出到當前目錄

tables:指定匯出的表名,可以是多個,用逗號分隔

rows:y表示同時匯出資料 (可選),預設值y,n表示只導表結構

log:日誌檔案輸了到當前目錄 (可選)

匯出3--資料庫模式

exp 使用者名稱/密碼@網路服務名 file=d:/***x.dmp full=y rows=y  log=d:/***x.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:/***x.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=d:/***x.dmp

tables:指定匯入的表名,可以是多個,用逗號分隔

rows:y表示同時匯出資料 (可選),預設值y,n表示只導表結構

file:匯入當前目錄的*.dmp檔案到資料庫

imp 使用者名稱/密碼@網路服務名 file=d:/***x.dmp  show=y

show: y表示不匯入,只看看。可以看看*.dmp是從哪個版本的庫匯出來的,好像也能看字符集。

使用dba身份匯入,空格部分要加單引號

imp \'使用者名稱/密碼@網路服務名 as sysdba\'   tables=表名1,表名2 rows=y file=d:/***x.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...