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...