To prevent whitespace trimming in all CHAR
, DATE
, and numeric EXTERNAL
fields, you specify PRESERVE
BLANKS
as part of the LOAD
statement in the control file. However, there may be times when you do not want to preserve blanks for all CHAR
, DATE
, and numeric EXTERNAL
fields. Therefore, SQL*Loader also enables you to specify PRESERVE
BLANKS
as part of the data type specification for individual fields, rather than specifying it globally as part of the LOAD
statement.
In the following example, assume that PRESERVE
BLANKS
has not been specified as part of the LOAD
statement, but you want the c1
field to default to zero when blanks are present. You can achieve this by specifying PRESERVE
BLANKS
on the individual field. Only that field is affected; blanks will still be removed on other fields.
c1 INTEGER EXTERNAL(10) PRESERVE BLANKS DEFAULTIF c1=BLANKS
In this example, if PRESERVE
BLANKS
were not specified for the field, then it would result in the field being improperly loaded as NULL (instead of as 0).
There may be times when you want to specify PRESERVE
BLANKS
as an option to the LOAD
statement and have it apply to most CHAR
, DATE
, and numeric EXTERNAL
fields. You can override it for an individual field by specifying NO
PRESERVE
BLANKS
as part of the data type specification for that field, as follows:
c1 INTEGER EXTERNAL(10) NO PRESERVE BLANKS