bfile字段实际的文件存储在文件系统中,字段中存储的是文件定位指针.bfile对
oracle来说是只读的,也不参与事务性控制和数据恢复
bfile的基本操作如下:
1.先在oracle数据库中下面我们建立一个目录别名,用于将文件定位指针映射到文
件系统:
create DIRECTORY 'tmpdir' AS '/tmp';
tmpdir表示逻辑目录名,'/tmp'是实际目录。 注意该目录oracle应该有读权限
然后根据需要授权
GRANT READ ON DIRECTORY bfile_dir1 TO scott;
建立一个含有bfile字段的表
create table bfiletest(id number(3), fname bfile);
2.插入数据
这里需要使用bfilename来进行bfile字段的insert 或者 update操作
INSERT INTO bfiletest
VALUES (1, BFILENAME ('tmpdir', 'tmptest'));
bfilename的参数1是DIRECTORY名,参数2是文件名。注意:这一行中插入的是
一个指向/tmp/tmptest的文件定位指针映射,不是文件本身。
3.读取bfile
通过使用dbms_lob包进行可以对bfile读入到blob/clob对象中操作(只读)
CREATE OR REPLACE PROCEDURE loadLOBFromBFILE_proc IS
Dest_loc BLOB;
Src_loc BFILE := BFILENAME('tmpdir', 'tmptest');
BEGIN
SELECT blob_col INTO Dest_loc FROM aBLOBtable
WHERE ID= 111
FOR UPDATE;
/* 如果bfile文件实际存在 */
IF (DBMS_LOB.FILEEXISTS(Src_loc) != 0)
THEN
/* 打开bfile源文件 */
DBMS_LOB.OPEN(Src_loc, DBMS_LOB.LOB_READONLY);
/* 打开目标blob: */
DBMS_LOB.OPEN(Dest_loc, DBMS_LOB.LOB_READWRITE);
/*从文件中装入 */
DBMS_LOB.LOADFROMFILE(Dest_loc, Src_loc,DBMS_LOB.GETLENGTH(Src_loc));
/* 记得关闭: */
DBMS_LOB.CLOSE(Dest_loc);
DBMS_LOB.CLOSE(Src_loc);
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Operation failed');
END;
会话能打开多少个文件有init参数SESSION_MAX_OPEN_FILES决定
文件大小由OS决定, 32位的文件系统为每个文件2gb或4gb
其它请参阅oracle联机文档.
分享到:
相关推荐
使用Oracle的大对象存储类型BLOB,BFILE存储和读取大文件,也包括使用FTP传输文件,如果使用FTP传输文件,需要在服务器端安装Serv-U软件。数据库为Oracle 10g,代码为Visual Studio 2008 VC++开发,软件中的代码有BLOB...
Bfile例子(找了很久才找到的),希望对不熟悉Bfile的朋友有所帮助。
本文详细介绍的oracle数据库如何存储bfile
3. **多线程处理**:对于大文件,为了提高用户体验,可能会使用Web Workers进行后台处理,避免阻塞主线程。 4. **进度条显示**:在文件上传或下载过程中,提供进度反馈是用户友好的表现。"bfile"可能提供了进度条...
Oracle数据库系统支持对大型数据对象(LOBs,Large Objects)的操作,这包括BLOB、CLOB、NCLOB和BFILE四种类型。每种类型都有其特定的用途和特性,适用于存储不同类型的大数据。 1. BLOB(Binary Large Object): ...
在这个例子中,`afile_to_bfile.c`可能是实现此功能的源代码文件,它将使用这些函数来完成文件之间的内容转移。 1. **打开文件**:`fopen()`函数接受两个参数,一个是文件名,另一个是访问模式(如"r"代表读,"w...
前端开源库-bfilebfile,node.js的文件系统包装器
命令行实用程序,用于加密/解密DOOM的.bfile和.blang文件。 用法 idCrypt <file> 该工具将尝试解密文件是否以.blang或.bfile结尾,否则进行加密。 编译中 Linux / macOS 要进行编译,您需要使用rustup设置一个...
- 选项B错误,DBMS_LOB没有BFILENAME函数,定位BFILE通常使用DBMS_LOB.FOPEN或DBMS_LOB.GETBFILENAME。 - 选项C错误,DBMS_LOB.FILEEXISTS不是用来查找BFILE的位置,而是检查一个BFILE是否存在。 - 选项D正确,...
- **Bfile_OpenMainMemory**、**Bfile_CreateMainMemory**、**Bfile_RenameMainMemory**、**Bfile_DeleteMainMemory**:这些函数用于主内存相关的操作。 - `int Bfile_OpenMainMemory(char *filename, char mode);`...
- **创建含BFILE类型的表**:使用`CREATE TABLE {表名} (id NUMBER, fname BFILE);`命令可以创建包含BFILE类型的表。 - 示例:`CREATE TABLE bfile_test (id NUMBER(3), fname BFILE);` - **插入BFILE数据**:使用`...
目录对象在Oracle中用于存储操作系统路径,便于BFILE类型的使用。 2. **权限授予** - `grant read on directory TNPDIR to SCOTT;` 授予用户对目录的读取权限是使用BFILE类型的前提。 3. **BFILE类型使用** - ...
§10.1.11 使用 product_user_file来限制用户使用产品 220 §10.2 常用技巧 221 §10.2.1 long 类型的查询 222 §10.2.2 如何确定执行时间 222 §10.2.3 如何终止用户会话 222 §10.2.4 用TRANSLATE对数据加密和解密...
Blob的使用涉及多个步骤,包括创建、插入、读取和更新。 1. 创建Blob字段: 当创建包含Blob字段的表时,需要指定表空间和数据块大小。例如: ```sql CREATE TABLE tLob ( no NUMBER(4), name VARCHAR2(10), ...
- 使用BFILE前,需通过`CREATE DIRECTORY`命令创建一个数据库目录对象,映射到实际的物理路径,并赋予用户相应的访问权限。 - 插入BFILE时,需要指定目录名和文件名,例如`BFILENAME('directory_name', 'file_name...
根据提供的文件信息,我们可以从中提炼出与Oracle数据库相关的多个知识点,包括基本的命令操作、用户管理、表空间管理以及BFILE对象的使用等。接下来,将对这些知识点进行详细的阐述。 ### Oracle数据库基础命令 #...
§10.1.11 使用 product_user_file来限制用户使用产品 220 §10.2 常用技巧 221 §10.2.1 long 类型的查询 222 §10.2.2 如何确定执行时间 222 §10.2.3 如何终止用户会话 222 §10.2.4 用TRANSLATE对数据加密和解密...
Oracle是一种广泛使用的数据库管理系统,它以其性能稳定、可靠性高而闻名。为了更好地使用Oracle数据库,掌握一系列的命令是必不可少的。接下来,我将详细介绍从文件中提取出的Oracle命令及其相关知识点。 首先,...
- 对于BFILE,使用`BFILENAME`函数指定文件的逻辑路径,但不需立即关联物理路径。 4. **逻辑目录关联**: - 使用`CREATE DIRECTORY`创建逻辑目录,并将其与实际文件系统的路径关联。 - 授予用户创建目录的权限,...