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

Oracle:ब्लॉब्स वाली तालिका को एक .sql फ़ाइल में निर्यात करें जिसे फिर से आयात किया जा सकता है

मुझे नहीं लगता कि यह SQL डेवलपर के साथ संभव है (लेकिन तब मैं इसे बहुत बार उपयोग नहीं करता)।

मैं जिस एसक्यूएल क्लाइंट का उपयोग कर रहा हूं - एसक्यूएल वर्कबेंच/जे - यह कर सकता है।

इस डेटा को निर्यात करने के कई तरीके हैं।

एक मालिकाना स्क्रिप्ट जेनरेट करें

यह एक SQL स्क्रिप्ट बना सकता है जो किसी बाहरी फ़ाइल को संदर्भित करने के लिए एक विशेष (उपकरण विशिष्ट) संकेतन का उपयोग करता है, जैसे:

INSERT INTO images
  (name, data)
VALUES
  ('foobar', {$blobfile='blob_r1_c2.data'});
 

उपरोक्त कथन केवल SQL कार्यक्षेत्र के साथ फिर से निष्पादित किया जा सकता है। यह किसी अन्य SQL क्लाइंट के साथ संगत नहीं है।

utl_raw का उपयोग करें

एक अन्य विकल्प "ब्लॉब शाब्दिक" का उपयोग करना है, लेकिन एक वर्ण शाब्दिक के लिए ओरेकल की 4000 बाइट्स की सीमा के कारण, यह केवल वास्तव में के लिए काम करता है छोटे ब्लॉब मान:

INSERT INTO images
  (name, data)
VALUES
  ('foobar', to_blob(utl_raw.cast_to_raw('......')));
 

जहां cast_to_raw . के लिए अक्षर शाब्दिक है कॉल में बीएलओबी के हेक्स मान होंगे। चूंकि इसके लिए प्रति "ब्लॉब बाइट" में 2 वर्णों की आवश्यकता होती है, आप इसके साथ 2000 बाइट्स से बड़े बीएलओबी को संभाल नहीं सकते हैं। लेकिन वह सिंटैक्स लगभग सभी Oracle SQL टूल के लिए काम करेगा (यदि वे बहुत लंबी लाइनों के साथ स्क्रिप्ट को हैंडल कर सकते हैं)।

SQL*लोडर इनपुट फ़ाइल

तीसरा विकल्प डेटा को एक टेक्स्ट फ़ाइल में निर्यात करना है जिसे SQL*Loader का उपयोग करके आयात किया जा सकता है:

टेक्स्ट फ़ाइल में कुछ इस तरह होगा:

NAME DATAfoobar blob_r1_c2.data

निम्न SQL*लोडर नियंत्रण फ़ाइल के साथ:

विकल्प (छोड़ें=1)लोड डेटा वर्णसेट 'WE8ISO8859P15'INFILE 'images.txt'APPENDINTO TABLE IMAGESFIELDS को '\t' TRAILING NULLCOLS(NAME, lob_file_data FILLER, DATA LOBFILE) द्वारा समाप्त किया गया है।> 

इसे SQL*Loader का उपयोग करके लोड किया जा सकता है और इस प्रकार डेटा आयात करने के लिए SQL कार्यक्षेत्र की आवश्यकता नहीं है।

अधिक विवरण मैनुअल में हैं

संपादित करें

जैसा कि एलेक्स ने अपनी टिप्पणी में बताया है, आप डेटापंप निर्यात का भी उपयोग कर सकते हैं - लेकिन इसके लिए आवश्यक है कि आपके पास सर्वर पर फ़ाइल सिस्टम तक पहुंच हो। उपरोक्त सभी समाधान क्लाइंट पर डेटा संग्रहीत करते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL कथन द्वारा क्रम पर दायाँ कोष्ठक गुम है

  2. प्राथमिक कुंजी बदलें

  3. मैं sqldeveloper में एक सम्मिलित कथन से BLOB कॉलम में कैसे सम्मिलित कर सकता हूं?

  4. कैसे Oracle में नियमित अभिव्यक्ति से समूह निकालने के लिए?

  5. क्या Oracle 11g क्लाइंट के लिए ODP.NET आवश्यक है?