您可以为 Oracle SQL*loader 设置错误的最大值是多少?

What is the max value you can set ERRORS to for Oracle SQL*loader?

直截了当的问题..

Oracle 10 的文档指出:

Oracle 10g sql*loader documentation

(注意,我链接到 10g,因为它最方便,我将回答 Oracle 10 and/or Oracle 11,无论哪种方式都可以 - 我怀疑它会是相同的答案- 所以我添加了两个标签)。

ERRORS (errors to allow) Default: To see the default value for this parameter, invoke SQLLoader without any parameters, as described in Invoking SQLLoader.

ERRORS specifies the maximum number of insert errors to allow. If the number of errors exceeds the value specified for ERRORS, then SQL*Loader terminates the load. To permit no errors at all, set ERRORS=0. To specify that all errors be allowed, use a very high number.

(强调我的)。

因此,由于 Oracle 最多处理 NUMBER(38) 个 .. 我试过:

ERRORS=999999999999999999999999999999999999

(36位)

并立即收到此错误:

SQL*Loader-100: Syntax error on command-line

尝试更小的数字:

ERRORS=999999

工作正常。

那么您在这里可以使用的最大值是多少? 我没有在文档中找到它,所以不确定我是否找错了地方,或者它不在那里 :)

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

恕我直言 sqlldr 不支持数字 (39)。我认为 sql 加载程序中的所有数字参数都是整数数据类型。整数的常见限制是 2147483647.

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

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

设置问题我解决了

errors=-1

在 Oracle 11g 上运行良好