如何让SQL Loader每次生成带时间戳的独立日志(无需命令参数)
SQL Loader 日志自动加时间戳归档方案
SQL Loader的.par配置文件不支持动态生成带时间戳的文件名,没法直接在原.par里实现自动归档。给你个不用手动传命令行参数的解决方案,用Windows批处理脚本自动搞定:
步骤1:编写批处理脚本
把下面代码存成run_loader.bat,根据实际路径调整变量值:
@echo off setlocal enabledelayedexpansion :: 定义日志相关基础信息 set "LOG_DIR=D:\projects\log" set "LOG_NAME_PREFIX=TRACK_MIGRATION_" :: 生成YYYYMMDD_HHMMSS格式的时间戳 for /f "tokens=1-3 delims=/" %%a in ("%date%") do set "DATE_PART=%%c%%a%%b" for /f "tokens=1-3 delims=:." %%a in ("%time%") do set "TIME_PART=%%a%%b%%c" set "TIMESTAMP=%DATE_PART%_%TIME_PART%" :: 拼接最终日志文件名 set "LOG_FILE=%LOG_DIR%\%LOG_NAME_PREFIX%%TIMESTAMP%.log" :: 复制原par文件,替换日志路径为带时间戳的新路径,生成临时par文件 set "ORIG_PAR=D:\projects\your_par_file.par" <!-- 替换成你实际的.par文件路径 --> set "TEMP_PAR=D:\projects\temp_loader.par" :: 替换LOG行内容 for /f "delims=" %%i in (%ORIG_PAR%) do ( set "line=%%i" if "!line:~0,3!"=="LOG" set "line=LOG=%LOG_FILE%" echo !line! >> "%TEMP_PAR%" ) :: 调用SQL Loader执行临时配置文件 sqlldr parfile="%TEMP_PAR%" :: 可选:执行完成后删除临时par文件 del "%TEMP_PAR%" endlocal
步骤2:用脚本替代直接执行sqlldr
以后直接双击运行run_loader.bat,脚本会自动生成带时间戳的日志文件(比如TRACK_MIGRATION_20221229_113917.log),不会覆盖旧日志,全程无需手动修改参数。
补充说明
- 如果是Linux环境,思路一致,编写Shell脚本生成时间戳,动态修改par文件后执行sqlldr即可
- 若原.par文件中的LOG路径和示例不同,调整脚本中匹配LOG行的逻辑即可
内容的提问来源于stack exchange,提问作者SWEEPY
相关产品推荐
相关产品推荐

