數據庫導入導出

一、Oracle數據庫

1、 expdp/impdp命令導出/導入數據庫

  • 導出一個用戶下所有的表
 SELECT * FROM dba_directories    ---查找可以存放文件的路徑

 EXPDP USERID='sys/XXX@orcl as sysdba' schemas=emily directory=DATA_FILE_DIR dumpfile=emily20180226.dmp 
 logfile=emily20180226.log version=10.2.0.1.0  ---導出語句

IMPDP USERID='sys/oracle@orcl as sysdba' schemas=clfpg3 directory=DATA_FILE_DIR dumpfile=emily20180226.dmp 
version=10.2.0.1.0 ---導入語句

impdp fao/fao_db directory=DATA_FILE_DIR dumpfile=fao20180226.dmp ---導入語句(簡略版)
  • 導出user用戶的部分表:
expdp user/XXX@orcl dumpfile=expdp.dmp directory=DATA_FILE_DIR tables = ('tablename1','tablename2') logfile=expdp2018.log
---或者
expdp user/XXX@orcl dumpfile=expdp.dmp directory=DATA_FILE_DIR tables = tablename1,tablename2 logfile=expdp2018.log
  • 按查詢條件導出表:
expdp user/XXX@orcl dumpfile=expdp.dmp directory=DATA_FILE_DIR tables=tablename query='WHERE datatype=1'
  • 從一個用戶expdp導出再impdp導入到另一個用戶:
---向新用戶導入表
impdp user1/XXX directory=DATA_FILE_DIR dumpfile=expdp20180226.DMP REMAP_SCHEMA=user1:user2
---若USER2用戶存在,則導入成功之後直接登錄用戶即可;
---若USER2用戶不存在,則導入成功後需擁有dba權限的用戶修改user2的密碼方可登錄
alter user user2 identified by XXX;

其中:用戶名是sys,
密碼是XXX,
數據庫sid(實例名)是orcl,
schemas要導出的用戶名是emily(用戶可以是沒有創建的,密碼與導出時的用戶明碼一致),
logfile=emily20180226.log 導入、導出數據庫的日誌,
version=10.2.0.1.0 要導入到 10.2.0.1.0版本的Oracle數據庫中去。

2、 exp/imp命令導出/導入數據庫

  • 導入/導出部分表
exp userid=user1/xxxx@orcl tables=(tablename1,tablename2) file=E:\database.dmp  ---導出
imp user2/xxxx@orcl file=E:\database.dmp full=y ---導入
  • 導入/導出一個用戶下所有的表
exp userid=user1/xxxx@orcl file=E:\database.dmp  ---導出
imp user2/xxxx@orcl file=E:\database.dmp full=y ---導入
  • 遠程導入/導出其他電腦上的表
exp userid=user1/xxxx@192.168.20.48/orcl file=E:\database.dmp  ---導出
imp user2/xxxx@192.168.20.48/orcl file=E:\database.dmp full=y ---導入

說明:其中括號中內容可省略
exp 用戶名/密碼@(主機ip:端口號/)實例 ( tables=(tablename1,tablename2) ) file=dmp所在的路徑
imp 用戶名/密碼@(主機ip:端口號/)實例 file=dmp所在的路徑 full=y


說明:
1、oracle9i以後引入數據泵命令IMPDP/EXPDP;
2、Oracle11g通過exp導出的數據是無法通過imp導入到oracle10g中的,但通過expdp和impdp可以完成。
3、IMPDP/EMPDP是服務器端是命令,無法在客戶端使用。
4、Oracle跨版本導入導出可參照跨版本操作
4、Oracle11g中exp命令是無法 導出數據庫中的空表的,但可以通過EXPDP導出,若想使用exp命令導出Oracle11g數據庫空表,則進行以下設置即可;

--設置Oracle11g使用exp命令導出空表語句

---1、第一步執行:
alter system set deferred_segment_creation=false; 

---2、第二步執行:
select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 

---3、第三步執行第二步的結果
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章