OracleデータベースのBLOBフィールドの説明

2560 ワード

ソース:http://database.51cto.com/art/201004/196427.htm
OracleデータベースのBlobは、longフィールドの実際のアプリケーションよりもパフォーマンスが優れ、画像などの関連バイナリのデータを保存するための主な機能であることはよく知られています.以下は文章の主な内容の紹介です.
Blobフィールドを書き込む方法と他のタイプのフィールドを書き込む方法は非常に異なります.Blob自体にcursorがあるため、cursorを使用してblobを操作する必要があります.そのため、Blobを書き込む前にcursorを取得しなければ書き込みできません.では、Blobのcursorを得るにはどうすればいいですか.
これは、まずemptyのblobを挿入する必要があります.これにより、blobのcursorが作成され、その後、このemptyのblobのcursorをselectでクエリーする必要があります.これにより、2つのステップでblobのcursorが得られ、本当にblobデータを書き込むことができます.
例を次に示します.
Oracleシリーズ:LOBオブジェクト処理
主に大量のデータを格納するためのデータベースフィールドであり、最大4 Gバイトの非構造化データを格納することができる.
主に文字タイプとバイナリファイルタイプLOBデータの記憶を紹介し、バイナリタイプLOBデータの記憶を単独で紹介する.
一、OracleデータベースのLOBデータ型分類
1、格納データの種類別:
①文字タイプ:
CLOB:大量の1バイト文字データを格納します.
NLOB:定幅マルチバイト文字データを格納します.
②バイナリタイプ:
BLOB:大きな無構造のバイナリデータを格納します.
③バイナリファイルタイプ:
BFILE:データベース外部のオペレーティングシステムファイルにバイナリファイルを格納します.ファイルパスを保存します.
2、記憶方式によって分けます:
①内部表領域に格納:
CLOB、NLOB、BLOB
②外部オペレーティングシステムファイルへ:
BFILE
二、大対象データの入力
1、LOBタイプ列の宣言
/*  
conn scott/tiger;  
Create TableSpace ts5_21  
DataFile 'E:\Oracle\ts5_21.dbf'  
Size 5m;  
*/ 
Create Table tLob (   
no Number(4),  
name VarChar2(10),  
resume CLob,  
photo BLob,  
record BFile  
)  
Lob (resume,photo)Store As ( 
Table space ts 5_21--格納されている表領域を指定します
Chunk 6 k--データ・ブロック・サイズの指定
Disable Storage In Row   
); 
2、大きいオブジェクト列を挿入
①普通列データを先に挿入する
②大きなオブジェクト列に遭遇した場合は、空白のコンストラクタを挿入します.
文字型:empty_clob(),empty_nclob()
バイナリ:empty_blob()
バイナリファイルタイプ:BFIleName関数は外部ファイルを指します.
BFIleName関数:
BFIleName('論理ディレクトリ名','ファイル名');
論理ディレクトリ名は、データ辞書が大文字で格納されているため、大文字のみです.Oracleデータベースは大文字と小文字を区別します.
作成時にBFIleName関数の論理ディレクトリを物理パスに指定する必要はありません.
例:
Insert Into tLob Values(1,'Gene',empty_clob(),empty_blob(),bfilename('MYDIR','IMG_0210.JPG'));  
③論理ディレクトリと物理ディレクトリを関連付ける.(バイナリファイルタイプの場合)
CREATE ANY DIRECTORY権限の付与
Grant CREATE ANY DIRECTORY TOユーザー名WITH ADMIN OPTION;
論理ディレクトリと物理ディレクトリの関連付け
ローカル
Create Directory論理ディレクトリ名As‘ファイルの物理ディレクトリ’;
ネットワーク:
Create Directory論理ディレクトリ名As'\ホスト名(IP)共有ディレクトリ';
例:
Create Directory MYDIR As 'E:\Oracle';
挿入例:
Insert into tlob values(1,'Gene','CLOB大オブジェクト列
',empty_blob(),bfilename('MYDIR','IMG_0210.JPG')); 
以上の関連内容は、OracleデータベースのBLOBタイプデータに対する操作とパフォーマンスの問題について説明しています.