मैं जावा में एक एप्लिकेशन लिख रहा हूं जहां मुझे टेक्स्ट फ़ाइलों को एक MySQL तालिका में सम्मिलित करने की आवश्यकता है। ये फ़ाइलें दसियों गीगाबाइट की हो सकती हैं। मैंने प्रदर्शन कारणों से ऐसा करने के लिए LOCAL INFILE का उपयोग करने का निर्णय लिया है। जिस समस्या में मैं चल रहा हूं वह यह है कि मुझे एक ही समय में एक चर के आधार पर एक मान डालने की भी आवश्यकता है।

निम्न तालिका मान लें।

foo_string | bar_int

निम्नलिखित डेटा मान लें

a
bb
cccc

मुझे पहली बार किसी अन्य तालिका से किसी मान की आईडी मिल रही है और इसे स्थानीय int में संग्रहीत करना है। फिर मैं myvalues.txt से मान डालने के लिए निम्न क्वेरी निष्पादित करने के लिए जाता हूं

statement.executeUpdate( "LOAD DATA LOCAL INFILE 'myvalues.txt' INTO TABLE  mytable FIELDS TERMINATED BY '' LINES TERMINATED BY '\\n'");

उपरोक्त अपेक्षित काम करता है लेकिन मैं एक ही समय में दूसरे (bar_int) कॉलम में एक मान डालना चाहता हूं। इसे करने का बेहतरीन तरीका क्या है?

0
user316114 3 जिंदा 2020, 05:58

1 उत्तर

सबसे बढ़िया उत्तर

आप एक कॉलम सूची और फिर एक SET क्लॉज का उपयोग कर सकते हैं:

LOAD DATA LOCAL INFILE 'myvalues.txt'
     INTO TABLE mytable
     FIELDS TERMINATED BY '' LINES TERMINATED BY '\\n'
     (foo_string)
     SET bar_int = 1;

यह फ़ाइल के एक कॉलम को foo_string कॉलम में पढ़ता है। यह bar_int को एक विशिष्ट मान पर सेट करता है।

1
Gordon Linoff 3 जिंदा 2020, 03:05