मैं आमतौर पर एसक्यूएल * लोडर का उपयोग करके बीएलओबी डेटा लोड करने के लिए एक अलग तरीके का उपयोग करता हूं। मूल रूप से मैं एक टेक्स्ट फ़ाइल आयात करता हूं जिसमें फ़ाइल नाम होते हैं और नियंत्रण फ़ाइल में, मैं फिर SQL * लोडर को बताता हूं कि वास्तविक सामग्री लॉबफाइल से आती है।
आपके मामले में इसका मतलब है कि आपको टेक्स्ट फ़ाइल बनाने की आवश्यकता होगी जिसमें (केवल) jpg का फ़ाइल नाम हो। तब नियंत्रण फ़ाइल इस तरह दिखनी चाहिए:
LOAD DATA infile data.txt TRUNCATE INTO TABLE per_images FIELDS TERMINATED BY ',' TRAILING NULLCOLS ( input_file FILLER, image_id "PER_IMAGES_s.nextval", parent_id constant 6598, table_name constant "PER_PEOPLE_F", image lobfile(input_file) terminated by eof )
इनपुट फ़ाइल data.txt
तब ऐसा दिखेगा:
0211664.jpg
यह महत्वपूर्ण है कि image lobfile ...
भाग अंत में है और नियंत्रण फ़ाइल में कोई भी निरंतर परिभाषा पहले आती है।
इस तरह के दृष्टिकोण का उपयोग करना मेरे लिए बहुत आसान लगता है क्योंकि आपको इनपुट फ़ाइल के आकार को जानने की आवश्यकता नहीं है और आप SQL * लोडर रन के साथ एक से अधिक चित्र लोड कर सकते हैं जो कि संभवतः बहुत तेज़ है यदि आपको लोड करने की आवश्यकता है बड़ी मात्रा में चित्र।
यदि आप एक से अधिक चित्र लोड करना चाहते हैं, तो इनपुट फ़ाइल में स्थिर मान शामिल होने चाहिए जो आपने अब तक नियंत्रण फ़ाइल के अंदर दिए हैं। निम्न इनपुट फ़ाइल लें:
6598,PER_PEOPLE_F,0211664.jpg 6599,PER_PEOPLE_F,0123456.jpg 6600,PER_PEOPLE_X,0987654.jpg
फिर आप तीनों चित्रों को एक ही नियंत्रण फ़ाइल से लोड कर सकते हैं:
LOAD DATA infile data.txt TRUNCATE INTO TABLE per_images FIELDS TERMINATED BY ',' TRAILING NULLCOLS ( parent_id, table_name, input_file FILLER, image_id "PER_IMAGES_s.nextval", image lobfile(input_file) terminated by eof )
नियंत्रण फ़ाइल कभी नहीं बदलेगी, केवल data.txt
. की सामग्री फ़ाइल।
आपकी मूल नियंत्रण फ़ाइल मेरे लिए काम करती है, अगर raw(9529)
पूरी तरह से हटा दिया गया है:
options (bindsize 9529) load data infile 0211664.jpg "fix 9529" append into table PER_IMAGES ( image, parent_id constant 6598, table_name constant "PER_PEOPLE_F", image_id "PER_IMAGES_s.nextval" )