Ошибка Sqlldr в скрипте оболочки c - PullRequest
1 голос
/ 22 июля 2011

Я делаю это в моем сценарии оболочки c .. мой результат установлен на 2, а не 0

sqlldr $ORA_UID/$ORA_PSWD,control=$CTL/${controlfile}.CTL,log=${sqllog},bad=${badlog},DATA=${filename},discard
=${dsclog}

set RESULT = $status

if ($RESULT != 0) then
  echo "Check sql log file"
  exit 1
endif

вот моя информация журнала, я не вижу никаких предупреждений .. может кто-нибудь помочь мне с этим.. спасибо

Table "BA"."TABLE1":
  25 Rows successfully loaded.
  0 Rows not loaded due to data errors.
  40785 Rows not loaded because all WHEN clauses were failed.
  0 Rows not loaded because all fields were null.


Table "BA"."TABLE1":
  19147 Rows successfully loaded.
  0 Rows not loaded due to data errors.
  21663 Rows not loaded because all WHEN clauses were failed.
  0 Rows not loaded because all fields were null.


Table "BA"."TABLE1":
  16588 Rows successfully loaded.
  0 Rows not loaded due to data errors.
  24222 Rows not loaded because all WHEN clauses were failed.
  0 Rows not loaded because all fields were null.


Space allocated for bind array:                 252324 bytes(43 rows)
Read   buffer bytes: 1048576

Total logical records skipped:          0
Total logical records read:         40810
Total logical records rejected:         0
Total logical records discarded:     5050

1 Ответ

2 голосов
/ 22 июля 2011

Согласно веб-сайту Orafaq , код возврата 2 указывает на состояние предупреждения. В вашем случае это происходит из-за того, что записи отбрасываются из-за ошибок предложения WHEN. С веб-сайта есть 4 возможных уровня:

0 - successful 
1 - failed 
2 - warn 
3 - fatal 

Вы, вероятно, захотите считать 2 успешным результатом наряду с 0.

Я давно не делал CShell, но что-то вроде этого может быть:

if ($RESULT != 0 && $RESULT != 2) then
...