मैं एक php स्क्रिप्ट जो एक्सएमएल फाइल को पार्स करता है और एक बड़े एसक्यूएल फ़ाइल है कि इस तरह दिखता है बनाता है में बड़े एसक्यूएल फ़ाइलें आयात करने के लिए:mysql तालिका
INSERT IGNORE INTO table(field1,field2,field3...)
VALUES ("value1","value2",int1...),
("value1","value2",int1)...etc
इस फ़ाइल में 20GB से अधिक होने का कहते हैं (मैं एक 2.5 जीबी फ़ाइल पर परीक्षण किया है लेकिन यह भी विफल रहता है)।
मैं जैसे आदेशों की कोशिश की है:
mysql -u जड़ -p TABLE_NAME < /var/www/bigfile.sql
इस छोटी फ़ाइलों पर काम करता है, 50MB के आसपास का कहना है। लेकिन यह एक बड़ी फाइल के साथ काम नहीं करता है।
मैंने कोशिश की:
mysql> source /var/www/bigfile.sql
मैं भी mysqlimport कोशिश की, लेकिन यह है कि ठीक से मेरी फ़ाइल पर कार्रवाई नहीं होंगे।
मैं एक त्रुटि है कि कहते हैं
ERROR 2006 (HY000): MySQL server has gone away
लगभग होता जा रहे हैं। निष्पादन शुरू करने के 30 सेकंड बाद।
मैंने 4 जीबी तक allow_max_packet सेट किया है, लेकिन इसे दिखाने के साथ इसे सत्यापित करते समय यह केवल 1 जीबी दिखाता है।
क्या कोई और 10 घंटे बर्बाद किए बिना ऐसा करने का कोई तरीका है?
मुझे ऐसा क्यों नहीं लगता था ... – nick
ने लगभग 5 मिनट में 2.5 जीबी आयात किया। सलाह के लिये धन्यवाद! – nick
my.cnf में 'max_allowed_packet = 16M' सेटिंग को भी देखें - इसे 16M की तरह बहुत बड़ी सेटिंग में सेट करना बड़े एकल प्रविष्टियों की अनुमति देगा –