2012-04-16 16 views
6

मैं एक तरह से कुशलतापूर्वक MySQL डेटाबेस के साथ एक CSV फ़ाइल सामग्री की तुलना करने को खोजने के लिए कोशिश कर रहा हूँ (1 लाख से अधिक पंक्तियों तुलना करने के लिए) के रूप में एक ही डेटा है कि क्या, मैं मैंने सभी पंक्तियों को सरणी में रखने से पहले कुछ समान किया है लेकिन यह स्मृति अधिभार के कारण पंक्तियों की एक छोटी संख्या के लिए काम करेगा।जाँच हो रही है एक बड़ी CSV फ़ाइल (1m पंक्तियाँ) एक MySQL तालिका

मेरे सवाल है, वहाँ ऐसा करने के लिए एक recommendable तरीका है? कोई पुस्तकालय या कुछ जो मदद कर सकता है?

मैं अपने जवाब appretiate होगा।

+2

"तुलना" करके आप सभी फ़ील्ड या केवल विशेष फ़ील्ड का परीक्षण कर रहे हैं? क्या यह पृष्ठभूमि कार्य है या उपयोगकर्ता ऐसा होने पर प्रतीक्षा कर रहा है? यदि आप वास्तव में क्या करने की कोशिश कर रहे हैं, इस बारे में अधिक जानकारी प्रदान कर सकते हैं (उदाहरण के लिए, तुलना के कारण) कोई समस्या से निपटने के लिए एक अलग तरीका सुझा सकता है। – gregmac

+0

यदि आपके पास कई पंक्तियां हैं, तो CSV को एक temp तालिका में लोड करने और उसके विरुद्ध अपनी तुलना करने के बारे में कैसे? – F21

+0

मैं सिर्फ यकीन है कि मेरी डेटाबेस (पहले आयातित) में डेटा डेटा CSV फ़ाइल है कि के साथ मेल खाता है और प्रिंट आउट (खुद के लिए) के लिए पंक्तियों की संख्या से मेल खाता है और जो ऐसा नहीं करता पंक्तियों की संख्या कोशिश कर रहा हूँ मैच। –

उत्तर

10

मान लीजिए कि यह एक सैनिटी चेक है और आप 0 मतभेदों का लक्ष्य रखते हैं, डेटाबेस को उसी प्रारूप की एक CSV फ़ाइल के रूप में डंप करने और फिर कमांड लाइन टूल्स (diff या cmp) का उपयोग करके यह जांचने के लिए कि वे मेल खाते हैं ?

आपको यह सुनिश्चित करना होगा कि आपका सीएसवी डंप आदेश दिया गया है & पाठ्यक्रम की मूल फ़ाइल के समान स्वरूपित है।

+0

+1 अच्छा जवाब। – dqhendricks

+0

वास्तव में यह एक अच्छा विकल्प है –

+0

इसके साथ समस्या यह है कि मुझे नहीं पता कि त्रुटि कहां है, क्या अंतर है या समस्या में पंक्तियां क्या हैं। –

2

इसके अलावा @ therefromhere उत्कृष्ट जवाब है, तो आप भी एक हैश गणना कर सकते हैं, MySQL में और मूल फ़ाइल में दोनों और फिर दो की तुलना करें।

+0

अच्छा जवाब भी है, लेकिन अगर –

+0

कोई नहीं है, तो आसानी से त्रुटि का पता नहीं लगा सकता है, जब तक कि आप प्रति पंक्ति हैश नहीं करते। –

0

मैं इसे कभी नहीं अपने आप को कोशिश की, लेकिन MySQL एक सीएसवी तालिका प्रकार है। आप MySQL फ़ाइल को सीधे पढ़ने में सक्षम हो सकते हैं जैसे कि यह सिर्फ एक और डेटाबेस तालिका थी। आपको शायद एक खाली तालिका बनाने की आवश्यकता होगी जो आपके पास सीएसवी फ़ाइल से मेल खाती है, बस डेटा निर्देशिका में .frm फ़ाइल बनाई गई है। फिर आप अपनी सीएसवी फ़ाइल के साथ डेटा निर्देशिका में खाली .csv फ़ाइल को प्रतिस्थापित कर सकते हैं। आपको एक मरम्मत तालिका चलाने की आवश्यकता हो सकती है क्योंकि आपने आयात नहीं किया था।

http://dev.mysql.com/doc/refman/5.1/en/csv-storage-engine.html

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