Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

पीएल/एसक्यूएल में बीएलओबी को फाइल के रूप में कैसे सेव करें?

यहां मैं पीएल/एसक्यूएल में फाइल के रूप में बीएलओबी डेटा को सहेजने के लिए एक उदाहरण दे रहा हूं। BLOB डेटा आप इसे BLOB कॉलम वाली तालिका से प्राप्त कर सकते हैं, या आप इसे डिस्क पर किसी फ़ाइल से प्राप्त कर सकते हैं।

BLOB को फ़ाइल के रूप में सहेजने के लिए PL/SQL फ़ंक्शन उदाहरण

नीचे दी गई प्रक्रिया में निम्नलिखित तीन तर्क हैं:

  1. Oracle निर्देशिका ऑब्जेक्ट नाम (i_dir के रूप में)।
  2. फ़ाइल नाम के रूप में सहेजें (i_file के रूप में)।
  3. बीएलओबी डेटा (i_blob के रूप में)।
CREATE OR REPLACE PROCEDURE blob_to_file (i_dir    IN VARCHAR2,
                                          i_file   IN VARCHAR2,
                                          i_blob   IN BLOB)
AS
   l_file       UTL_FILE.file_type;
   l_buffer     RAW (32767);
   l_amount     BINARY_INTEGER := 32767;
   l_pos        INTEGER := 1;
   l_blob_len   INTEGER;
BEGIN
   l_blob_len := DBMS_LOB.getlength (i_blob);

   l_file :=
      UTL_FILE.fopen (i_dir,
                      i_file,
                      'WB',
                      32767);

   WHILE l_pos < l_blob_len
   LOOP
      DBMS_LOB.read (i_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);
EXCEPTION
   WHEN OTHERS
   THEN
      IF UTL_FILE.is_open (l_file)
      THEN
         UTL_FILE.fclose (l_file);
      END IF;

      RAISE;
END blob_to_file;

परीक्षा

निम्नलिखित पीएल/एसक्यूएल ब्लॉक ओरेकल निर्देशिका ऑब्जेक्ट, फ़ाइल नाम और बीएलओबी डेटा पास करके उपरोक्त प्रक्रिया को कॉल करेगा। बीएलओबी डेटा के लिए, मैं GET_BLOB फ़ंक्शन का उपयोग कर रहा हूं जिसके लिए मैंने अपने पिछले ब्लॉग पोस्ट में एक उदाहरण दिया है:पीएल/एसक्यूएल में फ़ाइल से बीएलओबी प्राप्त करें। नीचे के मामले में, यह MY_DIR स्थान से myfile.jpg फ़ाइल से BLOB डेटा प्राप्त करेगा और इसे IMG_DIR स्थान में abc.jpg फ़ाइल करने के लिए सहेजेगा।

DECLARE
   f_blob   BLOB;
BEGIN
   /* check the above mentioned link for get_blob function example */
   f_blob := get_blob ('MY_DIR', 'myfile.jpg');
   /* now pass the blob to blob_to_file procedure to save it as a file */
   blob_to_file ('IMG_DIR', 'abc.jpg', f_blob);
END;

अब आप BLOB के माध्यम से बनाई गई फ़ाइल के लिए IMG_DIR निर्देशिका के स्थान की जांच कर सकते हैं।

यह भी देखें:

  • Oracle निर्देशिका ऑब्जेक्ट कैसे बनाएं?
  • टॉड का उपयोग करके Oracle तालिका से BLOB डेटा निकालने का तरीका जानें

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या जॉइन मामले के ऑन क्लॉज में संदर्भित तालिकाओं का क्रम है?

  2. Oct2014CPU, ArcGIS डेस्कटॉप को क्रैश करता है

  3. संक्षेप में हल्का

  4. Oracle डेटाबेस में एक अपवाद चर का उपयोग करके उपयोगकर्ता-परिभाषित अपवाद को कैसे घोषित करें?

  5. क्या स्पष्ट एएनएसआई जॉइन बनाम निहित जॉइन के उपयोग पर ओरेकल की आधिकारिक सिफारिश है?