expdp與impdp匯出匯入指定表

2021-08-20 20:22:32 字數 1878 閱讀 5928

oracle裡指定匯入匯出表,原本在10g或以前,很簡單的:

一、10g或以前

1、匯出指定表

exp 'sys/pwd@server1 as sysdba'

file

=c:\temp\tables

.dmp tables

=(schema1.table1,schema1.table2)

2、匯入指定表

imp 'sys/pwd@server2 as sysdba'

file

=c:\temp\tables

.dmp fromuser=schema1 touser=schema1 tables

=(table1,table2)

ignore

=y

二、11g或12c

但12c以後,似乎就不支援這種寫法了。可以這樣寫:

1、匯出指定表

expdp 'sys/pwd@server1 as sysdba' directory=dbbak dumpfile

=tables

.dmp logfile=

tables

.log tables

=schema1.table1,schema1.table2

2、匯入指定表

--如果源庫和目標庫對應的表空間沒變:

impdp 'sys/pwd@server2 as sysdba' directory=dbbak dumpfile

=tables

.dmp tables

=schema1.table1,schema1.table2 remap_schema=schema1:schema1

--remap_schema=schema1:schema1,源庫shema:目標庫schema

--如果源庫和目標庫對應的表空間不一樣:

impdp 'sys/pwd@server2 as sysdba' directory=dbbak dumpfile

=tables

.dmp tables

=schema1.table1,schema1.table2 remap_schema=schema1:schema2 remap_tablespace=tablespace1:tablespace2

--remap_schema=schema1:schema2,源庫shema:目標庫schema

--remap_tablespace=tablespace1:tablespace2,源表空間:目標表空間

注意目標庫的schema對應的賬號,因為可能涉及到建立表等各種元素,要有足夠的許可權,才能導進去

其中,dbbak沒有的話,要先建立:

在sqlplus下:

create directory dbbak as 'c:\temp';--(手動建立temp資料夾)

grant read,write on directory dbbak to public;

這個dbbak是個啥東東呢?據說資料庫某種程度上類似乙個作業系統,它有自己的一套磁碟管理機制,一般不直接使用作業系統的檔案系統。甚至乎,它希望直接使用「生磁碟」,就是沒有格式化過的磁碟。所以,dbbak是乙個磁碟路徑對映,要將作業系統下的路徑對映到oracle裡,才能使用。

以上這個expdp,impdp匯出匯入指定表,網上搜了之後,發覺很少有直接能使用的例子,我這兩個還是綜合起來,經過一些測試才通過的。

另外,如果作業系統是win2012或以上作業系統,你在power shell裡執行以上**,是不行的。一定要在dos命令列視窗才可以。似乎這個power shell還停留在oracle 10g時代,一點也不power。

使用expdp和impdp遠端匯入匯出庫

tnames.ora增加 html view plain copy orcl description address list address protocol tcp host 遠端主機ip port 1521 connect data service name 遠端服務名 html view p...

impdp匯入expdp匯出資料庫例項

impdp命令在cmd下直接用,不必登入oracle。只能匯入expdp匯出的dmp檔案。expdp匯出的時候,需要建立 directory 匯出什麼表空間,匯入也要什麼表空間。匯出什麼使用者,匯入也要什麼使用者。如果沒有要新建。從遠端伺服器expdp匯出了toolbox使用者的資料庫dmp檔案,要...

expdp與impdp引數用法

一 建立邏輯目錄,該命令不會在作業系統建立真正的目錄,最好以system等管理員建立。create directory dpdata as opt 二 檢視管理理員目錄 同時檢視作業系統是否存在,因為oracle並不關心該目錄是否存在,如果不存在,則出錯 select from dba direct...