इस ट्यूटोरियल में, आप सीखेंगे कि Oracle में BLOB कॉलम से फाइल कैसे प्राप्त करें। एक उदाहरण देने के लिए, मैंने Oracle में एक तालिका EXT_FILES बनाई है और तालिका की संरचना निम्नलिखित है।
CREATE TABLE EXT_FILES ( FILE_NAME VARCHAR2(1000 BYTE), FILE_CONTENT BLOB ) /
उपरोक्त तालिका में डेटा डालें। यदि आप नहीं जानते कि BLOB कॉलम में फ़ाइल कैसे डालें, तो निम्न लेख देखें Oracle Table BLOB कॉलम में फ़ाइल कैसे डालें?
BLOB कॉलम से डिस्क पर फ़ाइलें प्राप्त करने के लिए, आपके स्कीमा में एक Oracle निर्देशिका ऑब्जेक्ट बनाया जाना चाहिए। Oracle में निर्देशिका बनाने के लिए निम्न आदेश दें.
CREATE OR REPLACE DIRECTORY IMGDIR AS 'C:\TEMP\IMAGES';
नीचे Oracle संग्रहीत प्रक्रिया उदाहरण है, जो एक कर्सर का उपयोग करके EXT_FILES तालिका (बीएलओबी डेटा युक्त) से रिकॉर्ड प्राप्त करेगा और फिर फ़ाइलों को एक-एक करके निर्दिष्ट निर्देशिका में निकालेगा।
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 निर्देशिका ऑब्जेक्ट के स्थान की जांच कर सकते हैं।
यह भी देखें:
- टॉड का उपयोग करके Oracle तालिका से BLOB डेटा निकालें