Introduction to Oracle BFILE Data Type
Oracle BFILE
data type is a special data type in the Oracle database used for handling binary file data. Unlike BLOB
and CLOB
types, BFILE
data type does not store the binary file itself, but stores the address (file system path) of the file. Therefore, it is suitable for storing large binary files such as images, audios, videos, etc., to reduce the storage burden on the database server. When using BFILE
data type, it is required to create the file in the file system of the operating system.
Syntax
In Oracle, the following syntax can be used to create a column of BFILE
data type:
column_name BFILE
where column_name
is the name of the column to be created.
Use Cases
BFILE
data type is suitable for storing large binary files such as images, audios, videos, etc. Since it does not store the binary data itself but the file address, it can significantly reduce the storage burden on the database server. Additionally, BFILE
data type can also be used for storing office documents such as documents and spreadsheets.
Examples
Here are two examples of using BFILE
data type.
Example 1: Creating a table with BFILE
data type
First, create an image file named sample_image.jpg
in the file system. Then, create a table named image_table
in Oracle with a column of BFILE
data type to store the address of the image file.
CREATE TABLE image_table (
image_file BFILE
);
Now, data can be inserted into image_table
as follows:
INSERT INTO image_table VALUES (BFILENAME('IMAGE_DIR', 'sample_image.jpg'));
where IMAGE_DIR
is the directory name containing the sample_image.jpg
file.
Example 2: Querying a table with BFILE
data type
The following SQL statement can be used to query the data in the image_table
table:
SELECT image_file FROM image_table;
This will return a result set containing BFILE
data type. To access the file, FILEOPEN
and GETLENGTH
functions in the DBMS_LOB
package provided by Oracle can be used. Here is an example:
DECLARE
file_handle BFILE;
file_length NUMBER;
BEGIN
SELECT image_file INTO file_handle FROM image_table;
file_length := DBMS_LOB.GETLENGTH(file_handle);
DBMS_LOB.FILEOPEN(file_handle);
DBMS_OUTPUT.PUT_LINE('File length: ' || file_length);
DBMS_LOB.FILECLOSE(file_handle);
END;
Conclusion
Oracle BFILE
data type is a useful data type for storing the address of large binary files. It is suitable for storing images, audios, videos, and other large files, which can effectively reduce the storage burden on the database server and improve the performance of the database system. When using BFILE
data type, it is important to ensure that the file exists and is accessible in the file system of the operating system. In summary, Oracle BFILE
data type is a valuable data type that can be used for storing large binary file addresses, providing benefits in terms of storage efficiency and database performance.