ストリーム・レコード形式では、レコードをサイズで指定してではなく、SQL*Loaderでレコード終了記号を読み込むことによって、レコードが確認されます。ストリーム・レコード形式は最も柔軟性のある形式ですが、パフォーマンスに影響する場合があります。ストリーム・レコード形式として解釈されるようにデータ・ファイルを指定するには、次のように指定します。
INFILE datafile_name ["str
terminator_string"
]
str
は、ファイルがストリーム・レコード形式であることを示しています。terminator_string
には、次の'
char_string
'
またはX'hex_string
'
を指定します。
'
char_string
'
は、一重引用符または二重引用符で囲まれた文字列です。
X'hex_string
'
は、16進形式のバイト列です。
terminator_string
に、特別な(印字不可能な)文字が含まれる場合、X'hex_string
'
で指定する必要があります。ただし、一部の印字不可能な文字列('
char_string
'
)はバックスラッシュを使用すると指定できます。次に例を示します。
\n
は、LFを示します。
\t
は、水平タブを示します。
\f
は、改ページを示します。
\v
は、垂直タブを示します。
\r
は、改行を示します。
セッションのNLS_LANG
初期化パラメータで指定されるキャラクタ・セットがデータ・ファイルのキャラクタ・セットと異なる場合、文字列はデータ・ファイルのキャラクタ・セットに変換されます。これはSQL*Loaderがデフォルトのレコード終了記号を確認する前に実行されます。
16進文字列はデータ・ファイルのキャラクタ・セット内にあるとみなされ、変換は実行されません。
UNIXベースのプラットフォームでは、terminator_string
を指定しない場合、デフォルトで改行文字\n
が使用されます。
Windowsベースのプラットフォームでは、terminator_string
を指定しない場合、\n
または\r\n
のうちデータ・ファイル内で先に現れる文字がレコード終了記号として使用されます。つまり、データ・ファイルの1つ以上のレコードで、フィールドに\n
が埋め込まれていることがわかっている場合に、\r\n
をレコード終了記号として使用するには、これを指定する必要があります。
例7-3に、terminator_stringが文字列'|\n'
で指定されている場合に、ストリーム・レコード形式でデータをロードする方法を示します。バックスラッシュを使用すると、文字列に印字不可能な改行文字を指定することができます。
関連項目:
Language and Character Set File Scanner (LCSSCAN)ユーティリティを使用して不明なファイル・テキストの言語およびキャラクタ・セットを確認する方法の詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。
例7-3 ストリーム・レコード形式でのデータのロード
load data
infile 'example3.dat' "str '|\n'"
into table example
fields terminated by ',' optionally enclosed by '"'
(col1 char(5),
col2 char(7))
example3.dat:
396,ty,|
4922,beth,|