BFILE
データ型には、データベースの外側にあるオペレーティング・システム・ファイルの非構造化バイナリ・データが格納されます。BFILE
列または属性には、データを含む外部ファイルを示すロケータが格納されます。BFILE
としてロードされるファイルは、ロード時に存在している必要はなく、後で作成できます。SQL*Loaderでは、必要なオブジェクト(サーバーのファイル・システム上の物理ディレクトリに対する論理的な別名)がすでに作成されていると想定しています。詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。
BFILE
列に対応する制御ファイルのフィールドの記述は、列名の後にBFILE
句を記述して行います。BFILE
句には、引数としてディレクトリ・オブジェクト(server_directoryの別名)名の後にBFILE
名が必要です。いずれの引数も文字列定数として指定するか、他のフィールドを介して動的にロードできます。詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
次の2つのBFILE
のロード例を示します。例11-22では、1つのファイル名のみを動的に指定する方法を、例11-23では、BFILE
とディレクトリ・オブジェクトの両方を動的に指定する方法を示します。
例11-22 BFILEを使用したデータのロード: ファイル名のみを動的に指定
制御ファイルの内容
LOAD DATA
INFILE sample.dat
INTO TABLE planets
FIELDS TERMINATED BY ','
(pl_id CHAR(3),
pl_name CHAR(20),
fname FILLER CHAR(30),
1 pl_pict BFILE(CONSTANT "scott_dir1", fname))
データ・ファイル(sample.dat)
1,Mercury,mercury.jpeg, 2,Venus,venus.jpeg, 3,Earth,earth.jpeg,
注意:
例の左に付けた太字の数字は、次の注意事項と対応しています。
ディレクトリ名は引用符に囲まれており、そのまま使用されるため、文字列は大文字にせずそのまま指定します。
例11-23 BFILEを使用したデータのロード: ファイル名およびディレクトリを動的に指定
制御ファイルの内容
LOAD DATA
INFILE sample.dat
INTO TABLE planets
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
(pl_id NUMBER(4),
pl_name CHAR(20),
fname FILLER CHAR(30),
1 dname FILLER CHAR(20),
pl_pict BFILE(dname, fname) )
データ・ファイル(sample.dat)
1, Mercury, mercury.jpeg, scott_dir1, 2, Venus, venus.jpeg, scott_dir1, 3, Earth, earth.jpeg, scott_dir2,
注意:
例の左に付けた太字の数字は、次の注意事項と対応しています。
dname
は、ロードしたファイルに対応するディレクトリ名を含む、データ・ファイルのフィールドにマップされています。