データファイルに余分な非表示の文字が含まれています。オリジナルは表示されませんが、おそらくWindowsで作成されており、CRLF 新しい改行>;そして、改行(LF)のみを期待しているUNIX/Linux環境でSQL*Loaderを実行しています。キャリッジリターン(CR)文字はまだファイル内にあり、OracleはそれらをファイルのZIPフィールドの一部として認識しています。
最後の行にはCRLF(または改行マーカー)がないため、その行に-そしてのみ その行-ZIPフィールドは5文字として表示され、他のすべての場合は6文字として表示されます。 98001^M
。
デフォルトの動作
viやvimのような編集でデータファイルを開くと、それらの余分な^M
が表示されます。 制御文字。
これを修正する方法はいくつかあります。ファイルを変更できます。これを行う最も簡単な方法は、SQL * Loaderを実行する環境で作成された新しいファイルにデータをコピーして貼り付けることです。必要に応じて、行末を変換するユーティリティがあります。 dos2unix
。または、WindowsエディターがCRなしでファイルを保存できる場合があります。 Dittoが提案したように、データファイルにフィールド区切り文字を追加することもできます。
または、INFILE
を変更して、SQL*LoaderにCRLFを予期するように指示することもできます。 行:
LOAD DATA
INFILE Customer.dat "str '\r\n'"
INTO TABLE Customer
...
...ただし、CR文字を使用せずにLinuxで作成されたファイルを提供すると、問題が発生します。