147.Oracle数据库SQL开发之 大对象——理解大对象类型
欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/50180889
创建3个表
clob_content,包含一个CLOB列
blob_content,包含一个BLOB列
bfile_content,包含了一个BFILE列。
命令如下:
CREATE TABLE clob_content (
id INTEGER PRIMARY KEY,
clob_columnCLOB NOT NULL
);
CREATE TABLE blob_content (
id INTEGER PRIMARY KEY,
blob_columnBLOB NOT NULL
);
CREATE TABLE bfile_content (
id INTEGER PRIMARY KEY,
bfile_columnBFILE NOT NULL
);
1. 使用大对象
1.1 使用CLOB和BLOC
用数据填充CLOB和BLOB
如下:
INSERT INTO clob_content (
id,clob_column
) VALUES (
1,TO_CLOB('Creeps in this petty pace')
);
INSERT INTO clob_content (
id,clob_column
) VALUES (
2, TO_CLOB('from day to day')
);
向blob_content表添加两行记录
INSERT INTO blob_content (
id,blob_column
) VALUES (
1,TO_BLOB('100111010101011111')
);
INSERT INTO blob_content (
id,blob_column
) VALUES (
2,TO_BLOB('A0FFB71CF90DE')
);
从CLOB中检索数据
lob_user@PDB1> select * from clob_content;
IDCLOB_COLUMN
------------------------------------------------------------------------------------------
1 Creeps in this petty pace
2 fromday to day
查询blob_content表中的行,如下:
lob_user@PDB1> select * from blob_content;
ID
----------
BLOB_COLUMN
----------------------------------------------------------------------------------------------------
1
100111010101011111
2
0A0FFB71CF90DE
1.1.1 修改CLOB和BLOB中的数据
使用UPDATE和INSERT语句。
lob_user@PDB1>update clob_content set clob_column=to_clob('what light through yonder windowbreaks') where id=1;
1 row updated.
lob_user@PDB1>update blob_content set blob_column=to_blob('1110011010101011111') where id=1;
1 row updated.
可以初始化LOB定位器,但实际数据并不存储在LOB中。使用EMPTY_CLOB函数存储一个空的CLOB,使用EMPTY_BLOB函数存储一个空的BLOB:
如下:
lob_user@PDB1> insert intoclob_content(id,clob_column) values ( 3, empty_clob());
1 row created.
lob_user@PDB1> insert intoblob_content(id,blob_column) values ( 3,empty_blob());
1 row created.
要情况LOB数据时,可以在UPDATE语句中使用EMPTY_CLOB和EMPTY_BLOB,如下:
lob_user@PDB1> update clob_content setclob_column= empty_clob() where id=1;
1 row updated.
lob_user@PDB1> update blob_content setblob_column= empty_blob() where id=1;
1 row updated.
1.2 使用BFILE
BFILE LOB类型可以存储指向文件的指针,可以通过数据库服务器的文件系统访问。这些文件存储在数据库之外,可以指向位于任何媒体上的文件,可以是硬盘,CD,DVD等。
1.2创建目录对象
在BFILE列中存储文件指针之前,必须在数据库中创建一个目录对象,表示文件在文件系统中的存储目录。使用CREATE DIRECTORY语句。
需要有CREATE ANYDIRECTORY数据库权限。
-- create the BFILE directory
collection_user@PDB1> create directorysample_files_dir2 as '/home/oracle/sample_files';
1.3用文件指针填充BFILE列
BFILE只是一个外部文件的指针,所以填充BFILE列时非常简单的。
CREATE TABLE bfile_content (
id INTEGER PRIMARY KEY,
bfile_columnBFILE NOT NULL
);
插入,如下:
INSERT INTO bfile_content (
id,bfile_column
) VALUES (
1,BFILENAME('SAMPLE_FILES_DIR', 'textContent.txt')
);
INSERT INTO bfile_content (
id,bfile_column
) VALUES (
2,BFILENAME('SAMPLE_FILES_DIR', 'binaryContent.doc')
);