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:
NOCHECK indicates that SQL*Loader should not check for a BOM and should read all the data in the data file as data.
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
CHECK for a data file that uses a non-Unicode character set.
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.
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.