sql 加载程序中的错误=n
errors=n in sql loader
我想知道控制文件中ERRORS=n的意义。
如果 SQL 加载程序超过特定值(在本例中为 101 或更高),我们可以使用此选项使它失败吗?
我如何处理 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
是的,这就是它的用途。看到这个 Oracle doc.
errors -- number of errors to allow (Default 50)
SQL 如果错误数超过此值,加载程序将停止加载。设置 errors=0
将使加载程序忽略所有错误。
根据文档: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 中使用 return 代码,并在您的代码中使用它。
#!/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
我想知道控制文件中ERRORS=n的意义。 如果 SQL 加载程序超过特定值(在本例中为 101 或更高),我们可以使用此选项使它失败吗? 我如何处理 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
是的,这就是它的用途。看到这个 Oracle doc.
errors -- number of errors to allow (Default 50)
SQL 如果错误数超过此值,加载程序将停止加载。设置 errors=0
将使加载程序忽略所有错误。
根据文档: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 中使用 return 代码,并在您的代码中使用它。
#!/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