oracle SQL加载程序:每次生成新日志文件

2fjabf4q  于 2023-01-01  发布在  Oracle
关注(0)|答案(2)|浏览(140)

我正在使用SQL加载器将数据从CSV文件导入到数据库表中,它工作正常。每次我运行命令sqlldr时,日志文件都会被新的信息覆盖。有没有办法添加时间戳或其他东西来保存这些日志文件的存档,而不是覆盖同一个文件,也没有在命令参数中传递值。

  • .par文件:
CONTROL=D:\projects\ctl\control.ctl
LOG=D:\projects\log\TRACK_MIGRATION.log
DATA=D:\projects\data\CUSTOMERS_SITES.csv

想要的内容如下:跟踪迁移日志

oo7oh9g9

oo7oh9g91#

您必须修改启动脚本,以便从参数文件中删除log参数,并将log参数添加到命令行。
.par档桉

CONTROL=D:\projects\ctl\control.ctl
DATA=D:\projects\data\CUSTOMERS_SITES.csv

命令行

sqlldr user/password@DB parfile=parfile.par log=log_%date%_%time:~0,2%%time:~3,2%%time:~6,2%.log

日志文件

29.12.2022  20:06             1 262 log_29.12.2022_200657.log
29.12.2022  20:12             1 262 log_29.12.2022_201224.log
4ioopgfo

4ioopgfo2#

经过长时间的搜索,没有发现通过添加时间戳或其他东西来自动命名SQL Loader日志文件的本地方法。
如上所述,我建议将命令行 Package 在脚本中,该脚本将负责在日志文件生成后重命名日志文件,或者使用log=命令行参数,如果您经常运行命令,这会有点令人沮丧。
对于我的情况,我发现我们的客户端在服务器中使用VBScript来处理这些事情,所以我决定使用它来 Package 我的命令行。

'Running SQL Loader command line
Dim oShell
Set oShell = WScript.CreateObject("WScript.Shell")
oShell.run "sqlldr userid=" & DBLogin & "/" & DBPwd & "@" & DBName & " parfile=parfile.par"
Set oShell = Nothing

'Renaming the log file (TRACK_MIGRATION_YYYYMMDD_HHMMSS.log)
Dim FSO
Dim todayDate
todayDate = Year(Now) & Month(Now) & Day(Now) & "_" & Hour(Now) & Minute(Now) & Second(Now)
Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.MoveFile "TRACK_MIGRATION.log", "TRACK_MIGRATION_" & todayDate & ".log"

相关问题