1

我想运行一个用一些参数定制的 sqlldr 命令,更准确地说是一个名称和一个关联的数字。现在我只通过名称进行迭代,但我想将每个名称与一个数字相关联。

@echo off
set ORACLE_PWD=orcl
set NLS_NUMERIC_CHARACTERS=.,
setlocal
echo "Run number " %1
For %%X in (region nation supplier customer part partsupp orders lineitem) do (
sqlldr userid='sys/%ORACLE_PWD% as sysdba' log=%%X%1.log control=%%X.ctl direct=true rows=<associated_number> multithreading=true
)

我有 2 个选项:使用另一个数字数组(这可能是最难的事情)或解析一个文本文件,例如:

region 25 (or region DELIMITER 25)  
nation 100
supplier 5000 

等等

然后将这些值获取到 vars 并在 sqlldr 命令中使用它们来自定义我的日志名称和行数。

我知道批处理脚本中的数组是一场噩梦,我正在尝试,但我做错了。有人可以帮我吗?

4

1 回答 1

3

如果你保存这个:

region 25
nation 100
supplier 5000

例如,在名为 的文件中,params.txt此脚本将读取该文件并相应地替换值:

@echo off
set ORACLE_PWD=orcl
set NLS_NUMERIC_CHARACTERS=.,
setlocal
echo "Run number " %1
For /F "tokens=1,2" %%X in (params.txt) do (
sqlldr userid='sys/%ORACLE_PWD% as sysdba' log=%%X%1.log control=%%X.ctl direct=true rows=%%Y multithreading=true
)
于 2011-03-07T02:54:25.620 回答