需導出某用戶名下**所有表**,手工寫 TABLES 參數不現實。
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
c:\export_user_tables.bat,刪除第一行(SQL*Plus 回顯)與最後一行(EXIT)。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) 多會話並行 |