Нужна помощь в пакетном скрипте: используйте 1 или 2 массива ИЛИ анализируйте файл с номером имени кортежа - PullRequest
1 голос
/ 07 марта 2011

Я хочу запустить команду 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 для настройки имени моего журнала и количества строк.

Я понимаю, что массивы в пакетном скрипте - кошмар, и я пытаюсь, но не могу понять это правильно. Может кто-нибудь, пожалуйста, помогите мне?

1 Ответ

3 голосов
/ 07 марта 2011

Если вы сохраните это:

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
)
...