在 Windows 命令列下,系統環境變數 %date% 可直接取得日期字串。經測試,格式為 YYYY-MM-DD 星期X,需截取前 10 碼:
C:\>echo %date%
2006-04-24 星期一
C:\>echo %date:~0,10%
2006-04-24
直接套用至 exp 指令:
exp userid=eygle/eygle file=d:\eygle%date:~0,10%.dmp log=d:\eygle%date:~0,10%.log
注意:Windows NT/2000/XP 日期格式可能不同,若失敗嘗試用雙引號包裹 "%date%" 或改用方法二。
透過 SQL 從資料庫取得標準化時間戳,再由 HOST 呼叫外部命令,完全跨平台。
COLUMN today NEW_VALUE dt
SELECT TO_CHAR(SYSDATE, 'DDMMYYYY') today FROM DUAL;
HOST exp userid=eygle/eygle tables=emp file=exp_prod_&dt..exp log=exp_prod_&dt..log
EXIT
關鍵點:COLUMN ... NEW_VALUE 將查詢結果存入替換變數 &dt,HOST 執行 OS 命令,雙點號 .. 區隔變數與副檔名。
@ECHO OFF
SET ORACLE_SID=eygle
SQLPLUS eygle/eygle @doexp
E:\Itpub\ItpubTrain\Exp2>DIR
...
2003-10-07 15:12 4,096 exp_prod_07102003.exp
2003-10-07 15:12 335 exp_prod_07102003.log
2003-08-26 15:18 4,096 exp_prod_26082003.exp
2003-08-26 15:18 312 exp_prod_26082003.log
...
檔名自動包含 DDMMYYYY 格式日期,完美支援多版本保留與自動化排程。
YYYYMMDD_HH24MISS 精確到秒,避免同天多次執行覆蓋。cron 實現全自動化備份。COMPRESS=Y、CONSISTENT=Y 等參數優化匯出品質。expdp) 可直接在參數檔使用 %U 自動分割檔案,並支援 FILE_NAME_CONVERT 類似功能。