您可以为Oracle SQL *加载程序设置ERRORS的最大值是多少?

时间:2017-03-24 13:46:12

标签: oracle11g oracle10g sql-loader

直截了当的问题..

Oracle 10的文档指出:

Oracle 10g sql*loader documentation

(注意,我联系了10g,因为它最方便,我会回答Oracle 10和/或Oracle 11,无论哪种方式都很好 - 我怀疑它会是相同的答案虽然 - 所以我添加了两个标签。)

  

错误(允许的错误)   默认值:要查看此参数的默认值,请调用不带任何参数的SQL Loader,如调用SQL Loader中所述。

     

错误指定允许的最大插入错误数。如果错误数超过为ERRORS指定的值,则SQL * Loader将终止加载。要完全不允许错误,请设置ERRORS = 0。要指定允许所有错误,使用非常高的数字。

(强调我的)。

所以,由于Oracle最多处理NUMBER(38)..我试过:

ERRORS=999999999999999999999999999999999999

(36位数)

并及时收到此错误:

  

SQL * Loader-100:命令行上的语法错误

尝试使用更小的数字:

ERRORS=999999

工作正常。

那么你可以在这里使用的最大值是什么? 我在文档中找不到它,所以不确定我是在寻找错误的地方,还是不在那里:)

是的,我需要一个大号,我正在加载一个数百万行的文件,所以我想尽可能地使用它来避免任何未来的问题。

2 个答案:

答案 0 :(得分:2)

IMHO sqlldr不支持号码(39)。我认为sql loader中的所有数字参数都是整数数据类型。整数的常见限制是2147483647。

sqlldr xxxx control=ctl.ctl errors=2147483648 -> exception 

sqlldr xxxx control=ctl.ctl errors=2147483647 -> works fine 

答案 1 :(得分:0)

我解决了问题设置

errors=-1

在Oracle 11g上工作正常