A data file in a Unicode character set may contain binary data that matches the BOM in the first bytes of the file. For example the integer(2) value 0xFEFF = 65279 decimal matches the big-endian BOM in UTF16. In that case, you can tell SQL*Loader to read the first bytes of the data file as data and not check for a BOM by specifying the BYTEORDERMARK
parameter with the value NOCHECK
. The syntax for the BYTEORDERMARK
parameter is:
BYTEORDERMARK
NOCHECK
indicates that SQL*Loader should not check for a BOM and should read all the data in the data file as data.
BYTEORDERMARK
CHECK
tells SQL*Loader to check for a BOM. This is the default behavior for a data file in a Unicode character set. But this specification may be used in the control file for clarification. It is an error to specify BYTEORDERMARK
CHECK
for a data file that uses a non-Unicode character set.
The BYTEORDERMARK
parameter has the following characteristics:
It is placed after the optional BYTEORDER
parameter in the SQL*Loader control file.
It applies to the syntax specification for primary data files, and also to LOBFILEs and secondary data files (SDFs).
It is possible to specify a different BYTEORDERMARK
value for different data files; however, the BYTEORDERMARK
specification before the INFILE
parameters applies to the entire list of primary data files.
The BYTEORDERMARK
specification for the primary data files is also used as the default for LOBFILEs and SDFs, except that the value CHECK
is ignored in this case if the LOBFILE or SDF uses a non-Unicode character set. This default setting for LOBFILEs and secondary data files can be overridden by specifying BYTEORDERMARK
with the LOBFILE or SDF specification.