बैचों में रिकॉर्ड हटाना पीएल/एसक्यूएल लूप में किया जा सकता है, लेकिन आम तौर पर इसे खराब अभ्यास माना जाता है क्योंकि पूरे डिलीट को आम तौर पर एक लेनदेन के रूप में माना जाना चाहिए; और यह SQL*Loader नियंत्रण फ़ाइल के भीतर से नहीं किया जा सकता है। आपके DBA का आकार UNDO
. होना चाहिए आपको जो काम करने की ज़रूरत है उसे समायोजित करने के लिए जगह।
यदि आप पूरी तालिका को हटा रहे हैं तो आप निश्चित रूप से वैसे भी काट-छाँट करने से बेहतर होंगे, या तो नियंत्रण फ़ाइल में :
options(skip=1,load=250000,errors=0,ROWS=30000,BINDSIZE=10485760)
load data
infile 'G:1.csv' "str '^_^'"
truncate
into table IMPORT_ABC
...
या एक अलग truncate
के रूप में
लोड शुरू करने से पहले SQL*Plus/SQL Developer/कुछ अन्य क्लाइंट में स्टेटमेंट:
truncate table import_abc;
नुकसान यह है कि नई पंक्तियों को लोड करते समय आपकी तालिका अन्य उपयोगकर्ताओं के लिए खाली दिखाई देगी, लेकिन यदि यह एक समर्पित आयात क्षेत्र है (नाम से अनुमान लगाते हुए) तो इससे कोई फर्क नहीं पड़ता।
अगर आपका UNDO
वास्तव में इतना छोटा है तो आपको कई भार चलाने पड़ सकते हैं, इस मामले में - शायद स्पष्ट रूप से - आपको यह सुनिश्चित करने की ज़रूरत है कि आपके पास केवल truncate
है पहले वाले के लिए नियंत्रण फ़ाइल में (या अलग truncate
. का उपयोग करें स्टेटमेंट), और append
कोड>
इसके बजाय बाद की नियंत्रण फ़ाइलों में जैसा कि आपने टिप्पणियों में नोट किया है।
आप बाहरी तालिकाओं
पर भी विचार कर सकते हैं। यदि आप इस डेटा का उपयोग आधार के रूप में किसी अन्य चीज़ को पॉप्युलेट करने के लिए कर रहे हैं, क्योंकि कोई UNDO
नहीं है बाहरी डेटा स्रोत को बदलने पर ओवरहेड। इसे स्थापित करने और आपको आवश्यक निर्देशिका अनुमतियां देने के बारे में आपको शायद अपने डीबीए से बात करनी होगी।