使用动态数据文件和控制文件加载数据

时间:2017-08-19 06:40:00

标签: batch-file oracle11g database-administration sql-loader

我使用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

任何人都可以就此提出建议......

1 个答案:

答案 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