我想知道控制文件中ERRORS = n的重要性。 如果SQL加载器超过特定值(在这种情况下为101或更高),我们是否可以使用此选项使SQL加载程序失败? 如何处理Unix中失败场景的退出状态? 当SQL加载程序达到错误数时会发生什么?
考虑以下示例:
SQLLDR CONTROL=sample.ctl, LOG=sample.log, BAD=baz.bad, DATA=etc.dat
USERID=scott/tiger, ERRORS=100, LOAD=2000, DISCARD=toss.dsc,
DISCARDMAX=5
答案 0 :(得分:2)
根据文件:SQL* Loader
对于UNIX,退出代码如下:
ALL ROWS LOADED SUCCESSFULLY 0
ALL OR SOME ROWS REJECTED 2
ALL OR SOME ROWS DISCARDED 2
DISCONTINUED LOAD 2
COMMAND-LINE OR SYNTAX ERRORS 1
ORACLE ERRORS NONRECOVERABLE FOR SQL*LOADER 1
OPERATING SYSTEM ERRORS (SUCH AS FILE OPEN/CLOSE AND MALLOC) 1
因此,您可以在执行$?
后使用sqlldr
运算符在Unix中使用返回代码,并在代码中使用它。
#!/usr/bin/sh
SQLLDR CONTROL=sample.ctl, LOG=sample.log, BAD=baz.bad, DATA=etc.dat
USERID=scott/tiger, ERRORS=100, LOAD=2000, DISCARD=toss.dsc,
DISCARDMAX=5
exit_code=$?
if [[ ${exit_code} -ne 0 ]]
then
echo "Failed"
#The commands to run for failed scenario.
#...
fi
答案 1 :(得分:1)
是的,这就是它的意思。请参阅此Oracle doc。
errors -- number of errors to allow (Default 50)
如果错误数超过此值,SQL加载程序将停止加载。设置errors=0
将使加载程序忽略所有错误。