首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 導出指定用戶所有表:一條 SQL 生成批次 EXP 腳本

     編輯:Oracle 資料庫相關知識

需求

需導出某用戶名下**所有表**,手工寫 TABLES 參數不現實。

解決方案:SQL*Plus 動態生成 .bat

SET FEEDBACK OFF
SET PAGESIZE 0
SET HEADING OFF
SET VERIFY OFF
SET LINESIZE 200
SET TRIMSPOOL ON
SPOOL c:\export_user_tables.bat

SELECT 'EXP username/password@db '
     || 'TABLES=' || table_name
     || ' FILE=' || table_name || '.dmp '
     || 'TRIGGERS=N'
FROM   user_tables;

SPOOL OFF
SET FEEDBACK ON
SET PAGESIZE 9999
SET HEADING ON
SET VERIFY ON
EXIT

後處理

  1. 開啟 c:\export_user_tables.bat,刪除第一行(SQL*Plus 回顯)與最後一行(EXIT)。
  2. 檢查每行語法正確,執行 .bat 即可逐表導出 DMP。

進階版:單一 DMP 含所有表(推薦)

EXP username/password@db FILE=all_tables.dmp OWNER=username LOG=exp.log

使用 OWNER 參數(用戶級導出),一次產生單一 DMP,避免數百個檔案管理麻煩,導入時 IMP ... FROMUSER=username TOUSER=target 即可。

適用場景對比

場景推薦方式
需按表分檔(如不同表不同導入目標)動態生成 TABLES 批次腳本
整體 Schema 遷移/備份OWNER=username 單一 DMP
僅部份表、需並行導出加速手工分組 TABLES=(grp1) (grp2) 多會話並行
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved