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

Pyspark का उपयोग करके बड़ी csv फ़ाइल को oracle डेटाबेस तालिका में लोड करें

मैं आपको एक नियंत्रण फ़ाइल का एक उदाहरण दिखाता हूँ जिसका उपयोग मैं एक बहुत बड़ी फ़ाइल लोड करने के लिए करता हूँ (प्रत्येक दिन 120 मिलियन रिकॉर्ड)

OPTIONS (SKIP=0, ERRORS=500, PARALLEL=TRUE, MULTITHREADING=TRUE, DIRECT=TRUE, SILENT=(ALL))
UNRECOVERABLE
LOAD DATA
CHARACTERSET WE8ISO8859P1
INFILE '/path_to_your_file/name_of_the_file.txt'
BADFILE '/path_to_your_file/name_of_the_file.bad'
DISCARDFILE '/path_to_your_file/name_of_the_file.dsc'
APPEND
INTO TABLE yourtablename
TRAILING NULLCOLS
(
COLUMN1 POSITION(1:4) CHAR
,COLUMN2 POSITION(5:8)  CHAR
,COLUMN3 POSITION(9:11) CHAR
,COLUMN4 POSITION(12:18) CHAR
....
....)

कुछ विचार

  • यह हमेशा सीमांकक का उपयोग करने की तुलना में स्थिति के अनुसार तेजी से लोड हो रहा है
  • PARALLEL के विकल्पों का उपयोग करें , MULTITHREADING और DIRECT लोडिंग प्रदर्शन को अनुकूलित करने के लिए।
  • UNRECOVERABLE यह भी एक अच्छी सलाह है यदि डेटाबेस को पुनर्प्राप्त करने के लिए आपको हमेशा फ़ाइल की आवश्यकता होती है, तो आपको डेटा को फिर से लोड करना होगा।
  • उपयुक्त वर्ण सेट का प्रयोग करें।
  • ट्रेलिंग NULLCOLS क्लॉज SQL*Loader को बताता है कि रिकॉर्ड में मौजूद किसी भी अपेक्षाकृत स्थित कॉलम को नल कॉलम के रूप में माना जाए।
  • स्थिति का अर्थ है कि प्रत्येक पंक्ति में बिना किसी सीमांक के डेटा होता है, इसलिए आप तालिका में प्रत्येक फ़ील्ड की स्थिति को लंबाई से जान सकते हैं।

AAAAABBBBBBCCCCC19828733UUUU

  • यदि आपकी txt या csv फ़ाइल में फ़ील्ड सेपरेटर है, मान लें कि अर्धविराम, तो आपको FIELDS DELIMITED BY का उपयोग करना होगा

इसे एक नियंत्रण फ़ाइल में संग्रहीत किया जाता है, आमतौर पर एक्सटेंशन ctl के साथ एक टेक्स्ट फ़ाइल। फिर आप कमांड लाइन से आह्वान करते हैं

sqlldr userid=youuser/[email protected]_string control=/path_to_control_file/control_file.ctl



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sys को Sysdba के रूप में कनेक्ट करें:अपर्याप्त विशेषाधिकार

  2. DECOMPOSE() Oracle में फंक्शन

  3. java.library.path में कोई ocijdbc12 नहीं है

  4. क्या ईएफ 6 ऑरैकल संग्रहीत प्रक्रिया द्वारा लौटाए गए रेफ कर्सर से मेरे मॉडल ऑब्जेक्ट्स उत्पन्न कर सकता है?

  5. Oracle पर SQL इंजेक्शन कैसे करें