Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana Mendapatkan File Dari BLOB di Oracle?

Dalam tutorial ini, Anda akan belajar cara mendapatkan file dari kolom BLOB di Oracle. Sebagai contoh, saya telah membuat tabel EXT_FILES di Oracle dan berikut adalah struktur tabelnya.

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

Masukkan data ke dalam tabel di atas. Jika Anda belum tahu cara menyisipkan file ke kolom BLOB, baca artikel berikut Cara Menyisipkan File di Kolom BLOB Tabel Oracle?

Anda harus memiliki objek direktori Oracle yang dibuat dalam skema Anda, untuk mendapatkan file dari kolom BLOB ke disk. Untuk membuat direktori di Oracle berikan perintah berikut.

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

Di bawah ini adalah contoh Oracle Stored Procedure, yang akan mengambil record dari tabel EXT_FILES (berisi data BLOB) menggunakan kursor dan kemudian akan mengekstrak file satu per satu ke dalam direktori yang ditentukan.

Contoh Prosedur Tersimpan Oracle Untuk Mendapatkan File Dari Kolom BLOB di 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;

Uji

BEGIN
get_files_from_blob;
END;
/

Keluaran

PL/SQL procedure successfully completed.

Anda sekarang dapat memeriksa lokasi objek direktori IMGDIR untuk file yang diekstrak.

Lihat juga:

  • Ekstrak data BLOB dari Tabel Oracle Menggunakan 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. Cara menggunakan Fungsi Oracle LISTAGG

  2. Bagaimana cara mengubah Baris ke Kolom di Oracle?

  3. ORDER BY dengan kueri dalam, memberikan ORA-00907 tanda kurung kanan yang hilang

  4. Fungsi PENGGUNA di Oracle

  5. Cara Mengganti Baris Baru di Oracle