sqlldr LRM-00112: множественные значения не допускаются для параметра 'control' - PullRequest
1 голос
/ 12 сентября 2011

У меня есть сценарий оболочки с этим кодом:

sqlldr $ws_usr_eva/$ws_pass_eva@$ws_esq_eva CONTROL=/$HOME/controlfiles/CONTROL_FILE.CTL LOG=/$HOME/batch/log/LOG_FILE.$fecfile.log DATA=/$HOME/batch/input/INPUT_FILE_$fecfile.txt > /$HOME/batch/log/result_loader_eva.ora

Переменные $ ws_usr_eva, $ ws_pass_eva и $ ws_esq_eva заполняются до того, как я выполню sqlldr.Я уже проверил содержимое и все в порядке.

Поэтому, когда я запускаю скрипт, он показывает мне: LRM-00112: для параметра 'control' не допускается несколько значений

Я попытался запуститьсценарий без переменных, и он отлично работает:

sqlldr user/pwd@schema CONTROL=/$HOME/controlfiles/CONTROL_FILE.CTL LOG=/$HOME/batch/log/LOG_FILE.$fecfile.log DATA=/$HOME/batch/input/INPUT_FILE_$fecfile.txt > /$HOME/batch/log/result_loader_eva.ora

Я должен использовать переменные в sqlldr, потому что он читает их из файла конфигурации.

Я также пытаюсь с sqlldr userid =$ ws_usr_eva / $ ws_pass_eva @ $ ws_esq_eva ... но это не сработало.

Вы можете мне помочь?

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 16 мая 2013

В случае, если это поможет кому-либо, вам нужно заключить ваши пути (данные, контроль, журнал) в одиночные кавычки. Двойные qoutes не будут работать (хотя sqlldr не будет жаловаться, а просто игнорирует двойные qoutes).

0 голосов
/ 13 октября 2011

В вашей оболочке попробуйте экранировать переменные ::

sqlldr "${ws_usr_eva}/${ws_pass_eva}@${ws_esq_eva}" "CONTROL=${HOME}/controlfiles/CONTROL_FILE.CTL" "LOG=${HOME}/batch/log/LOG_FILE.${fecfile}.log" "DATA=${HOME}/batch/input/INPUT_FILE_${fecfile}.txt" > "${HOME}/batch/log/result_loader_eva.ora"
...