我使用sql loader将数据文件中的数据动态加载到Oracle表中。我还需要动态加载具有控制文件和数据文件的数据,需要在windows批处理文件中执行此操作。
我是使用Windows批处理文件的新手。
我试过像for for循环
@echo off
for %%C in ("C:\Example\Data*.ctl") do (for %%F in ("C:\Example\data-.csv")do ( sqlldr 'user/passwd@DBname' "CONTROL='%%C'" LOG='C:\Example\loader.log'"DATA='%%F'" ERRORS=10000 PARALLEL=TRUE DIRECT=TRUE
goto AfterLoop
):afterloop
任何人都可以就此提出建议......
答案 0 :(得分:0)
我不知道sqlldr及其正确的参数,但cmd会将等号视为参数分隔符,因此可能需要使用插入符号进行转义(如果没有引用)。
使用goto打破for循环将只有第一个执行第一个csv的ctl。
@echo off
for %%C in ("C:\Example\Data*.ctl") do (
for %%F in ("C:\Example\data-.csv") do (
sqlldr "user/passwd@DBname" "CONTROL='%%C'" LOG^=C:\Example\loader.log "DATA='%%F'" ERRORS^=10000 PARALLEL^=TRUE DIRECT^=TRUE
goto AfterLoop
)
:afterloop