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