Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak uzyskać plik z BLOB w Oracle?

W tym samouczku dowiesz się, jak pobrać plik z kolumny BLOB w Oracle. Aby podać przykład, utworzyłem tabelę EXT_FILES w Oracle, a poniżej przedstawiono strukturę tabeli.

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

Wstaw dane do powyższej tabeli. Jeśli nie wiesz, jak wstawić plik do kolumny BLOB, zapoznaj się z następującym artykułem Jak wstawić plik do kolumny BLOB tabeli Oracle?

Musisz mieć utworzony obiekt katalogu Oracle w swoim schemacie, aby pobrać pliki z kolumny BLOB na dysk. Aby utworzyć katalog w Oracle, wydaj następujące polecenie.

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

Poniżej znajduje się przykład Oracle Stored Procedure, który pobiera rekordy z tabeli EXT_FILES (zawierającej dane BLOB) za pomocą kursora, a następnie wyodrębnia pliki jeden po drugim do określonego katalogu.

Przykład procedury składowanej Oracle, aby pobrać plik z kolumny BLOB w 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;

Test

BEGIN
get_files_from_blob;
END;
/

Wyjście

PL/SQL procedure successfully completed.

Możesz teraz sprawdzić lokalizację obiektu katalogu IMGDIR dla wyodrębnionych plików.

Zobacz też:

  • Wyodrębnij dane BLOB z tabeli Oracle za pomocą ropuchy
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy ktoś mógłby wyjaśnić, co tak naprawdę robi instrukcja MERGE w Oracle?

  2. Używanie CONTINUE In Loops do wznowienia kontroli w Oracle

  3. Nieprawidłowy miesiąc podczas wstawiania danych do Oracle

  4. Jak włączyć rozszerzenia dla oci8 (Oracle) w php.ini - PHP Ostrzeżenie:Uruchomienie PHP:w nieznanym w wierszu 0

  5. Podziel ciąg na wiersze Oracle SQL