Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да получите файл от BLOB в Oracle?

В този урок ще научите как да получите файл от колоната BLOB в Oracle. За да дам пример, създадох таблица EXT_FILES в Oracle и следната е структурата на таблицата.

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

Вмъкнете данните в таблицата по-горе. Ако не знаете как да вмъкнете файл в BLOB колона, проверете следната статия Как да вмъкнете файл в колона BLOB таблица на Oracle?

Трябва да имате обект на директория на Oracle, създаден във вашата схема, за да получите файловете от колоната BLOB на диска. За да създадете директория в Oracle, дайте следната команда.

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

По-долу е примерът за съхранявана процедура на Oracle, който ще извлече записите от таблица EXT_FILES (съдържаща BLOB данни) с помощта на курсор и след това ще извлече файловете един по един в посочената директория.

Пример за съхранявана процедура на Oracle за получаване на файла от колона BLOB в 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;

Тест

BEGIN
get_files_from_blob;
END;
/

Изход

PL/SQL procedure successfully completed.

Вече можете да проверите местоположението на обекта на директорията IMGDIR за извлечените файлове.

Вижте също:

  • Извличане на BLOB данни от Oracle Table с помощта на 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. SQL Server еквивалент на функцията WM_CONCAT

  2. Грешка в DYLD_LIBRARY_PATH в моменталния клиент на Oracle

  3. Oracle :как да извадите две дати и да получите минути от резултата

  4. Oracle копира данни в друга таблица

  5. Как правилно да настроите променливата ORACLE_HOME на Ubuntu 9.x?