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

Oracle कैसे sqlldr . का उपयोग करके एक ब्लॉब कॉलम में एक तस्वीर लोड करने के लिए

मैं आमतौर पर एसक्यूएल * लोडर का उपयोग करके बीएलओबी डेटा लोड करने के लिए एक अलग तरीके का उपयोग करता हूं। मूल रूप से मैं एक टेक्स्ट फ़ाइल आयात करता हूं जिसमें फ़ाइल नाम होते हैं और नियंत्रण फ़ाइल में, मैं फिर 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"
)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle प्रक्रिया में तालिका को कैसे छोटा करें?

  2. किसी अन्य ORACLE डेटाबेस से क्वेरी तालिका

  3. ट्रिगर डालने के बाद उसी तालिका को अपडेट करें

  4. Oracle sql में दिनांक कार्यों के साथ कैसे काम करें?

  5. Oracle में शाब्दिक तालिका कैसे लिखें?