MySQL में Multiple Rows INSERT करना
कई rows जोड़ना
आपको अक्सर एक साथ कई rows जोड़नी होती हैं — students, products या records की list। प्रति row एक INSERT चलाना काम करता है पर धीमा है। MySQL आपको एक INSERT में कई rows insert करने देता है, जो तेज़ और साफ़ है।
एक बार में एक row
INSERT INTO students (roll, name) VALUES (1, 'Aman'); INSERT INTO students (roll, name) VALUES (2, 'Diya'); INSERT INTO students (roll, name) VALUES (3, 'Kabir');
यह काम करता है, पर हर statement अलग process होता है। कुछ rows को ठीक है; कई को धीमा और दोहराव वाला।
एक INSERT में कई rows
INSERT INTO students (roll, name) VALUES
(1, 'Aman'),
(2, 'Diya'),
(3, 'Kabir');
हर row की values parentheses में, commas से अलग list कीजिए। तीनों rows एक statement में जुड़ती हैं — लिखने में छोटा और चलाने में बहुत तेज़।
यह तेज़ क्यों है
एकल multi-row INSERT एक operation के रूप में process होता है, कई अलग statements भेजने और चलाने से कहीं कम overhead के साथ। सैकड़ों या हज़ारों rows load करने को, यह विशाल speed अंतर बनाता है — SQL में सबसे आसान performance जीतों में से एक।
SELECT से insert
INSERT INTO archive (id, name) SELECT id, name FROM users WHERE active = 0;
INSERT INTO ... SELECT एक table से rows दूसरी में copy करता है। यहाँ inactive users एक archive table में एक statement में copy होते हैं — values का कोई मैन्युअल typing नहीं।
Duplicates संभालना
-- unique key से टकराने वाली rows skip करो
INSERT IGNORE INTO students (roll, name) VALUES (1, 'Aman');
-- या इसके बजाय मौजूदा row update करो
INSERT INTO students (roll, name) VALUES (1, 'Aman Kumar')
ON DUPLICATE KEY UPDATE name = 'Aman Kumar';
INSERT IGNORE duplicate-key error कराने वाली rows skip करता है, और ON DUPLICATE KEY UPDATE मौजूदा row update करता है। दोनों bulk insert को duplicates के आगे सहज जारी रहने देते हैं।
आम गलतियाँ
- बेमेल value गिनती। हर row की values list किए columns से मेल खानी चाहिए।
- Rows के बीच commas भूलना। हर parenthesised set को comma से अलग कीजिए।
- Duplicate-key errors अनदेखा करना। INSERT IGNORE या ON DUPLICATE KEY UPDATE इस्तेमाल कीजिए।
- लाखों rows को एक विशाल statement। packet size का सम्मान करने को batches में insert कीजिए।
सारांश
- एक INSERT में commas से value sets list करके कई rows insert कीजिए।
- एकल multi-row INSERT कई अलग से बहुत तेज़ है।
- INSERT INTO ... SELECT दूसरी table से rows copy करता है।
- INSERT IGNORE और ON DUPLICATE KEY UPDATE duplicates संभालते हैं।
- विशाल loads को, batches में insert कीजिए।
आगे, कई rows update कीजिए updating multiple rows में, या उन्हें auto-number कीजिए AUTO_INCREMENT से।
अक्सर पूछे जाने वाले प्रश्न (FAQ)
MySQL में कई rows कैसे insert करूँ?
INSERT INTO t (a, b) VALUES (1,'x'), (2,'y'), (3,'z');। यह सारी rows एक statement में जोड़ता है, जो प्रति row एक INSERT से बहुत तेज़ है।एक साथ कई rows insert करना तेज़ क्यों है?
दूसरी table से rows कैसे insert करूँ?
INSERT INTO archive (id, name) SELECT id, name FROM users WHERE active = 0;। यह एक table से मेल खाती rows दूसरी में एक statement में copy करता है।Insert के दौरान duplicate rows से errors कैसे बचाऊँ?
INSERT IGNORE, या मौजूदा row update करने को INSERT ... ON DUPLICATE KEY UPDATE इस्तेमाल कीजिए। यह bulk insert को duplicates के आगे जारी रहने देता है।