Unicodeキャラクタ・セットのデータ・ファイルには、ファイルの最初のバイトにBOMと一致するバイナリ・データが含まれています。たとえば、integer(2)型の値0xFEFF = 65279小数点は、UTF16のビッグ・エンディアンBOMと一致します。この場合、SQL*Loaderを使用してデータ・ファイルの最初のバイトをデータとして読み込むことができます。また、値NOCHECKでBYTEORDERMARKパラメータを指定して、SQL*LoaderによってBOMを確認しないようにできます。BYTEORDERMARKパラメータの構文は次のとおりです。
BYTEORDERMARK NOCHECKを指定すると、SQL*LoaderではBOMが確認されず、データ・ファイルのすべてのデータがデータとして読み込まれます。
BYTEORDERMARK CHECKを指定すると、BOMを確認するようSQL*Loaderに指示します。これはUnicodeキャラクタ・セットのデータ・ファイルについてのデフォルト動作です。ただし、この指定は明確化の目的で制御ファイル内で使用されることがあります。Unicode以外のキャラクタ・セットを使用するデータ・ファイルについてBYTEORDERMARK CHECKを指定すると、エラーとなります。
BYTEORDERMARKパラメータには、次の特長があります。
SQL*Loader制御ファイル内のオプションのBYTEORDERパラメータの後に置かれます。
プライマリ・データ・ファイルの構文指定に適用される以外に、LOBFILEとセカンダリ・データ・ファイル(SDF)にも適用されます。
異なるデータ・ファイルに異なるBYTEORDERMARK値を指定できます。ただし、INFILEパラメータの前のBYTEORDERMARK指定が、プライマリ・データ・ファイルのリスト全体に適用されます。
プライマリ・データ・ファイルに対するBYTEORDERMARK指定は、LOBFILEおよびSDFに対するデフォルトとしても使用されます。ただし、LOBFILEまたはSDFでUnicode以外のキャラクタ・セットが使用されている場合は、値CHECKは無視されます。LOBFILEおよびセカンダリ・データ・ファイルに対するこのデフォルト設定は、LOBFILEまたはSDF指定にBYTEORDERMARKを指定することによって上書きできます。