В този урок ще научите как да вмъкнете файл в базата данни на Oracle. Типът файл може да бъде PDF, изображение или всеки документ. Използвам типа данни BLOB в таблицата на Oracle, за да демонстрирам следния пример.
Следвайте тези стъпки, за да вмъкнете файл (PDF, изображение, Docx, Xlsx и т.н.) в BLOB колоната на Oracle Database Table
- Създайте таблица в схемата на база данни на Oracle с колона BLOB, както е показано в примера по-долу.
CREATE TABLE ext_files ( file_name VARCHAR2 (1000), file_content BLOB) /
- След това създайте обект на директория на база данни, откъдето искате да вмъкнете файловете, както е показано в примера по-долу.
CREATE OR REPLACE DIRECTORY PDF_FILES As 'C:\my_pdf_files';
- Сега създайте следната функция, за да конвертирате файл в BLOB тип данни. Но се уверете, че сте променили името на директорията PDF_FILES във функцията по-долу с името, което сте създали на обекта на директорията.
CREATE OR REPLACE FUNCTION file_to_blob(p_file_name VARCHAR2) RETURN BLOB AS dest_loc BLOB := empty_blob(); src_loc BFILE := BFILENAME('PDF_FILES', p_file_name); BEGIN DBMS_LOB.OPEN(src_loc, DBMS_LOB.LOB_READONLY); DBMS_LOB.CREATETEMPORARY( lob_loc => dest_loc , cache => true , dur => dbms_lob.session ); DBMS_LOB.OPEN(dest_loc, DBMS_LOB.LOB_READWRITE); DBMS_LOB.LOADFROMFILE( dest_lob => dest_loc , src_lob => src_loc , amount => DBMS_LOB.getLength(src_loc)); DBMS_LOB.CLOSE(dest_loc); DBMS_LOB.CLOSE(src_loc); RETURN dest_loc; END file_to_blob; /_loc;END
Сега сте готови за теста за вмъкване на файл в таблицата на базата данни на Oracle.
Тест за вмъкване на PDF файл
DECLARE v_blob BLOB; BEGIN v_blob := file_to_blob ('emp.pdf'); INSERT INTO ext_files VALUES ('emp.pdf', v_blob); COMMIT; END; /
Тест за вмъкване на файл с изображение (JPG)
DECLARE v_blob BLOB; BEGIN v_blob := file_to_blob ('oracle-18c-install-step-1.JPG'); INSERT INTO ext_files VALUES ('oracle-18c-install-step-1.JPG', v_blob); COMMIT; END; /
Проверете таблицата за записи
SELECT * FROM EXT_FILES;
Изход
Вижте също:
- Разархивирайте ZIP файл с помощта на PL/SQL
- ZIP файлове в PL/SQL
-
Oracle SQL Часове Разлика между датите в ЧЧ:ММ:СС
-
Разбиране на псевдонима на Oracle – защо псевдонимът не се разпознава в заявка, освен ако не е обвит във втора заявка?
-
Изваждане на дати в Oracle - числови или интервални тип данни?
-
Trunc поле за дата в mysql като Oracle
-
Грешка при изключване на Oracle ORA-01033