2012-02-01 12 views
5

मैंने क्वेरी के नीचे एक SQL स्क्रिप्ट लिखी है। क्वेरी ठीक काम करता है।एसक्यूएल * लोडर का उपयोग कर तालिका में एक कॉलम अपडेट करें?

update partner set is_seller_buyer=1 where id in (select id from partner 
where names in 
(
'A','B','C','D','E',... // around 100 names. 
)); 

लेकिन अब एक प्रश्न में लगभग 100 नाम लिखने की बजाय, मैं सीएसवी फ़ाइल से सभी नाम लाने के लिए चाहता हूं। मैंने इंटरनेट पर एसक्यूएल * लोडर के बारे में पढ़ा लेकिन मुझे अपडेट क्वेरी पर ज्यादा कुछ नहीं मिला। मेरी सीएसवी फ़ाइल में केवल नाम हैं।

enter image description here

मैं

load data 
    infile 'c:\data\mydata.csv' 
    into table partner set is_wholesaler_reseller=1 
    where id in (select id from partner 
    where names in 
    ( 
    'A','B','C','D','E',... // around 100 names. 
)); 
    fields terminated by "," optionally enclosed by '"'   
    (names, sal, deptno) 

की कोशिश की है मैं यह कैसे प्राप्त कर सकते हैं? अग्रिम धन्यवाद।

उत्तर

5

एसक्यूएल * लोडर अद्यतन नहीं करता है, केवल आवेषण करता है। तो, आप एक अलग तालिका में अपने नाम डालने चाहिए, names कहते हैं, और उस से अपने अद्यतन चलाएँ:

load data 
    infile 'c:\data\mydata.csv' 
    into table names 
    fields terminated by "," optionally enclosed by '"'   
    (names, sal, deptno) 

यह करने के लिए एक वैकल्पिक करने के लिए है:

update partner set is_seller_buyer=1 where id in (select id from partner 
where names in 
(
select names from names 
)); 

आपका लोडर स्क्रिप्ट को बदला जा सकता है बाहरी टेबल्स का उपयोग करें जो ओरेकल को एक फ्लैट फ़ाइल का इलाज करने की अनुमति देता है जैसे कि यह एक टेबल है। शुरू करने के लिए एक उदाहरण here पाया जा सकता है।

संबंधित मुद्दे