oracle11goracle10gsql-loader

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


Straight forward question ..

The documentation for Oracle 10 states:

Oracle 10g sql*loader documentation

(Note, I linked to 10g since it was most convenient, I'll take an answer for Oracle 10 and/or Oracle 11, either way is fine - I suspect it'll be the same answer though - so I added both tags).

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.

(Emphasis mine).

So, since Oracle handles up to NUMBER(38) .. I tried:

ERRORS=999999999999999999999999999999999999

(36 digits)

and promptly got this error:

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

Trying a much smaller number:

ERRORS=999999

works fine.

So what's the maximum value you can use here ? I don't find it in the documentation, so not sure if I'm looking in the wrong place, or it's just not in there :)

And yeah, I need a LARGE number, I'm loading a multi-million row file, so I'd like to use the largest possible to avoid any future issues.


Solution

  • IMHO sqlldr is not supporting number(39). I think all number parameter in sql loader are integer data type. And common limits for integer is 2147483647.

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