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

2000 या 4000 बाइट्स से बड़ा BLOB टेस्ट स्ट्रिंग डालें

शुरुआत के लिए, आपको यह समझने की जरूरत है कि LOB क्या हैं। वे "बड़े डेटा" हैं, संभवतः Oracle में किसी भी अन्य डेटा प्रकार से बड़े हैं। वे फाइल सिस्टम पर नियमित फाइलों की तरह हैं। किसी फ़ाइल सिस्टम पर किसी फ़ाइल को लिखने के लिए, आपको

. करना होगा
  1. लिखने के लिए फ़ाइल खोलें
  2. अगर आप फ़ाइल को नए सिरे से भरना शुरू करना चाहते हैं, तो उसे काट दें
  3. अपने स्रोत डेटा को एक लूप में टुकड़ों में पढ़ें
  4. अपना डेटा हिस्सा एक ही लूप में फ़ाइल में एक-एक करके जोड़ें
  5. फ़ाइल बंद करें

कमोबेश यही बात एलओबी पर भी लागू होती है। आपकी तालिका में, एक LOB (CLOB/BLOB/NCLOB) कॉलम वास्तविक डेटा रखने वाले आपके डिस्क स्टोरेज पर किसी अन्य स्थान पर सिर्फ एक पॉइंटर/संदर्भ है। मानक Oracle शब्दों में, सूचक को "LOB लोकेटर" कहा जाता है। आपको चाहिए

  1. LOB लोकेटर को खोलें/आरंभ करें
  2. एलओबी सामग्री को छोटा करें, यदि आप इसे नए सिरे से भरना शुरू करना चाहते हैं
  3. लूप में LOB सामग्री में अपने डेटा भाग को एक-एक करके जोड़ें
  4. LOB लोकेटर बंद करें

PL/SQL में यह इस तरह दिख सकता है:

-- create table blob_test(id number, b blob);

declare 
  v_b blob; 
  aaa raw(32767);
  longLine varchar2(32767);
begin 
  longLine :=  LPAD('aaaa', 32767,'x');
  aaa := UTL_RAW.CAST_TO_RAW(longLine);
  insert into blob_test values(1,empty_blob()) returning b into v_b;
  dbms_lob.open(v_b,dbms_lob.lob_readwrite);
  dbms_lob.writeappend(v_b,UTL_RAW.LENGTH (aaa) ,aaa);
  dbms_lob.close(LOB_LOC=>v_b);
  commit;
end;

एक स्पष्टीकरण:

  1. LOB लोकेटर को इनिशियलाइज़ करें =insert into blob_test values(1,empty_blob()) returning b into v_b;
  2. लिखने के लिए LOB लोकेटर खोलें =dbms_lob.open(v_b,dbms_lob.lob_readwrite);
  3. एलओबी सामग्री को छोटा करें, यदि आप इसे नए सिरे से भरना शुरू करना चाहते हैं ... यह empty_blob() द्वारा किया जाता है insert . में कॉल करें ।
  4. लूप में LOB सामग्री में अपने डेटा भाग को एक-एक करके जोड़ें =यहां dbms_lob.writeappend() का केवल एक पुनरावृत्ति है , केवल एक ही हिस्सा जोड़ना aaa लंबाई का utl_raw.length(aaa) (अधिकतम 32767) LOB v_b . में
  5. LOB लोकेटर बंद करें =dbms_lob.close(LOB_LOC=>v_b);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DBMS_PARALLEL_EXECUTE और अप्रत्यक्ष रूप से प्रक्रिया पर अनुदान दिया गया

  2. क्या मैं प्रमाणपत्र सत्यापन oracle utl_http को छोड़ सकता हूं?

  3. क्या MERGE क्वेरी को बेहतर बनाने का कोई तरीका है?

  4. Oracle PL/SQL ट्रिगर त्रुटि

  5. Oracle टेबल ग्रोथ की भविष्यवाणी करना