Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm thế nào để lấy tệp từ BLOB trong Oracle?

Trong hướng dẫn này, bạn sẽ học cách lấy tệp từ cột BLOB trong Oracle. Để đưa ra một ví dụ, tôi đã tạo một bảng EXT_FILES trong Oracle và sau đây là cấu trúc của bảng.

CREATE TABLE EXT_FILES
(
FILE_NAME VARCHAR2(1000 BYTE),
FILE_CONTENT BLOB
)
/

Chèn dữ liệu vào bảng trên. Nếu bạn không biết cách chèn tệp vào cột BLOB, hãy xem bài viết sau Cách chèn tệp vào cột BLOB trong bảng Oracle?

Bạn phải có một đối tượng thư mục Oracle được tạo trong lược đồ của mình, để tải các tệp từ cột BLOB vào đĩa. Để tạo một thư mục trong Oracle, hãy đưa ra lệnh sau.

CREATE OR REPLACE DIRECTORY IMGDIR AS 'C:\TEMP\IMAGES';

Dưới đây là ví dụ về Thủ tục lưu trữ của Oracle, sẽ tìm nạp các bản ghi từ bảng EXT_FILES (chứa dữ liệu BLOB) bằng con trỏ và sau đó sẽ trích xuất từng tệp một vào thư mục được chỉ định.

Ví dụ về thủ tục lưu trữ trong Oracle để lấy tệp từ cột BLOB trong Oracle

CREATE OR REPLACE PROCEDURE get_files_from_blob
IS
l_file UTL_FILE.file_type;
l_buffer RAW (32767);
l_amount BINARY_INTEGER := 32767;
l_pos INTEGER := 1;
l_blob_len INTEGER;
l_blob BLOB;
l_filename ext_files.file_name%TYPE;
/* cursor to get the records from the table */
CURSOR c_files
IS
SELECT file_name, file_content FROM ext_files;
BEGIN
OPEN c_files;

LOOP

FETCH c_files
INTO l_filename, l_blob;

EXIT WHEN c_files%NOTFOUND;

l_blob_len := DBMS_LOB.getlength (l_blob);

/* Change the directory name (IMGDIR) to your Oracle directory object name*/
l_file :=
UTL_FILE.fopen ('IMGDIR',
l_filename,
'wb',
32767);
l_pos := 1;

WHILE l_pos < l_blob_len
LOOP
DBMS_LOB.read (l_blob,
l_amount,
l_pos,
l_buffer);
UTL_FILE.put_raw (l_file, l_buffer, TRUE);
l_pos := l_pos + l_amount;
END LOOP;

UTL_FILE.fclose (l_file);
END LOOP;

CLOSE c_files;
EXCEPTION
WHEN OTHERS
THEN
IF UTL_FILE.is_open (l_file)
THEN
UTL_FILE.fclose (l_file);
END IF;

RAISE;
END;

Kiểm tra

BEGIN
get_files_from_blob;
END;
/

Đầu ra

PL/SQL procedure successfully completed.

Bây giờ, bạn có thể kiểm tra vị trí của đối tượng thư mục IMGDIR cho các tệp được giải nén.

Xem thêm:

  • Trích xuất dữ liệu BLOB từ Bảng Oracle bằng Toad
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle SID và Tên dịch vụ; những lỗi kết nối

  2. Hiểu kết quả của Kế hoạch Giải thích Thực thi trong Nhà phát triển SQL Oracle

  3. Cần tìm thời gian xử lý trung bình giữa tất cả các bản ghi dấu thời gian trong Oracle SQL

  4. Xuất CLOB sang tệp văn bản bằng Oracle SQL Developer

  5. Oracle SQL:Cột không được phép