SQL*Loader Oracle में बड़े डेटा वॉल्यूम को बल्क लोड करने का मेरा पसंदीदा तरीका है। अधिकतम गति के लिए डायरेक्ट पाथ इंसर्ट विकल्प का उपयोग करें लेकिन डायरेक्ट-पाथ लोड के प्रभावों को समझें (उदाहरण के लिए, सभी डेटा हाई वॉटर मार्क से पहले डाला जाता है, जो कि अगर आप अपनी टेबल को छोटा करते हैं तो ठीक है)। इसमें खराब पंक्तियों के लिए भी सहनशीलता है, इसलिए यदि आपके डेटा में "कुछ" गलतियां हैं तो यह अभी भी काम कर सकता है।
SQL*Loader अनुक्रमणिका को निलंबित कर सकता है और अंत में उन सभी का निर्माण कर सकता है, जिससे बल्क इंसर्टिंग बहुत तेज़ हो जाती है।
SQL*Loader कॉल का उदाहरण:
$SQLDIR/sqlldr /@MyDatabase direct=false silent=feedback \
control=mydata.ctl log=/apps/logs/mydata.log bad=/apps/logs/mydata.bad \
rows=200000
और mydata.ctl कुछ इस तरह दिखेगा:
LOAD DATA
INFILE '/apps/load_files/mytable.dat'
INTO TABLE my_schema.my_able
FIELDS TERMINATED BY "|"
(ORDER_ID,
ORDER_DATE,
PART_NUMBER,
QUANTITY)
वैकल्पिक रूप से ... यदि आप केवल एक तालिका की संपूर्ण सामग्री को दूसरे डेटाबेस में कॉपी कर रहे हैं, तो आप ऐसा कर सकते हैं यदि आपका डीबीए एक डीबीलिंक (30 सेकंड की प्रक्रिया) सेट करता है, यह मानते हुए कि आपके डीबी को फिर से स्थान के साथ स्थापित किया गया है इसे पूरा करें।
truncate table my_schema.my_table;
insert into my_schema.my_table
select * from [email protected]_remote_db;
/* +append */
. का उपयोग संकेत अभी भी सीधे पथ डालने का उपयोग कर सकते हैं।