मुझे अपने जावा कोड से SQL सर्वर डेटाबेस (एक समय में 100) में एकाधिक पंक्तियां डालने की आवश्यकता है। मैं यह कैसे कर सकता हूँ? वर्तमान में मैं एक करके एक डालने वाला हूं और यह कुशल नहीं दिखता है।जावा से SQL सर्वर में एकाधिक पंक्ति डालने
उत्तर
आप इसे चलाने के लिए बैच और executeBatch()
बनाने के लिए PreparedStatement#addBatch()
का उपयोग कर सकते हैं।
Connection connection = null;
PreparedStatement statement = null;
try {
connection = database.getConnection();
statement = connection.prepareStatement(SQL);
for (int i = 0; i < items.size(); i++) {
Item item = items.get(i);
statement.setString(1, item.getSomeValue());
// ...
statement.addBatch();
if ((i + 1) % 100 == 0) {
statement.executeBatch(); // Execute every 100 items.
}
}
statement.executeBatch();
} finally {
if (statement != null) try { statement.close(); } catch (SQLException logOrIgnore) {}
if (connection != null) try { connection.close(); } catch (SQLException logOrIgnore) {}
}
भी देखें:
आप एक बहुत पारित कर सकते हैं SQL सर्वर पर एक कथन के रूप में एकाधिक प्रविष्टियों के साथ SQL के लिए लंबी स्ट्रिंग। यदि आप पैरामीटरयुक्त प्रश्न कर रहे हैं, तो यह काम नहीं करेगा। और समेकित एसक्यूएल तार "आम तौर पर एक बुरा विचार है।"
आप BULK INSERT कमांड को देखकर बेहतर हो सकते हैं। कॉलम ऑर्डर और इस तरह के बारे में कठोर होने की समस्या है। लेकिन इसके रास्ते तेजी से !!
का उपयोग करके बैच के साथ जावा पक्ष पर करने की सलाह दूंगा क्योंकि मैं इसका उपयोग नहीं कर सकता क्योंकि मेरे पास फ़ाइल नहीं है ... धन्यवाद ... – Kaddy
हाँ, यह फ़ाइल लिखने के लिए एक पिटा है और ऐसे, लेकिन इसके बारे में जागरूक होने के लिए यह एक अच्छा आदेश है। :) –
jdbc का उपयोग करके बैचिंग का एक उदाहरण मिला। इसे देखें: http://www.exampledepot.com/egs/java.sql/BatchUpdate.html
इस दृष्टिकोण में यदि बैच से एक रिकॉर्ड विफल हो जाता है तो क्या होगा ..? असफल रिकॉर्ड के बाद रिकॉर्ड डाले जाएंगे ... मैं कैसे सुनिश्चित कर सकता हूं कि रिकॉर्ड को छोड़कर जो अन्य सभी रिकॉर्ड विफल हो जाए ...? – Kaddy
वह वास्तव में इस्तेमाल किए गए ड्राइवर पर निर्भर करता है। ['ExecuteBatch()' javadoc] देखें (http://java.sun.com/javase/6/docs/api/java/sql/Statement.html#executeBatch%28%29)। – BalusC