2010-03-09 14 views
6

हमारे पास हमारे छोटे ऐप के लिए थोक अपलोड फ़ंक्शन बनाने में बड़ी संख्या में समस्याएं हैं। हम एक MySQL डेटाबेस में डेटा अपलोड करने के लिए FasterCSV मणि का उपयोग कर रहे हैं, लेकिन वह तेज़ सीएसवी अपनी आवश्यकताओं में इतनी तेज और सटीक है कि यह लगातार विकृत सीएसवी त्रुटियों और त्रुटियों के समय के साथ टूट जाता है।FasterCSV के लिए सीएसवी डेटा को प्री-प्रोसेस कैसे करें?

सीएसवी फाइलें आमतौर पर उपयोगकर्ताओं की अपनी वेबसाइट्स या माइक्रोसॉफ़्ट वर्ड डॉक्स से चिपकने वाले पाठ द्वारा बनाई जाती हैं, इसलिए यह अपेक्षा करना उचित नहीं है कि डेटा में स्मार्ट कोट्स या उच्चारण जैसे विषम वर्ण कभी नहीं होंगे। इसके अलावा उपयोगकर्ता यह पहचानने में आसानी से सक्षम नहीं होंगे कि उनका डेटा FasterCSV के लिए पर्याप्त है या नहीं। हमें इसे स्वचालित रूप से ठीक करने के लिए एक रास्ता खोजने की जरूरत है।

क्या FasterCSV मणि प्रक्रिया करने से पहले डेटा में किसी भी बिट को ठीक करने के लिए प्री-प्रोसेसिंग सीएसवी डेटा के लिए कोई अच्छा तरीका या विश्वसनीय उपकरण है?

+0

यह वास्तव में निर्भर करता है करने के लिए आप एक ब्लॉक पारित कर सकते हैं। आप किस प्रकार की त्रुटियों में चल रहे हैं? –

+0

वर्ड और एचटीएमएल से शब्द और प्रासंगिक उच्चारण वर्णों या विशेष पात्रों से अधिकतर स्मार्ट उद्धरण। कभी-कभी एक भटक बुलेट। एक्सेल सेल में पाठ के कई पैराग्राफ पेस्ट करते समय आपको सामान्य सामान मिलते हैं। –

उत्तर

1

आप FasterCsv पार्सर का एक नया उदाहरण बनाते समय फ़ाइल के एन्कोडिंग प्रकार को FasterCSV विकल्पों में पास कर सकते हैं। (यहां दस्तावेज़ देखें: http://fastercsv.rubyforge.org/classes/FasterCSV.html#M000018)

इसे यूटीएफ -8 या माइक्रोसॉफ्ट एन्कोडिंग में सेट करना इसे सबसे अधिक डोडी अतिरिक्त पात्रों से प्राप्त करना चाहिए, जिससे यह वास्तव में आपके आवश्यक तारों में पार्स हो सकता है ... फिर आप तारों को साफ़ कर सकते हैं दिल की सामग्री।

वहाँ भी "कन्वर्टर्स" है कि आप में पारित कर सकते हैं के बारे में डॉक्स में कुछ है - हालांकि यह परिवर्तित करने, कहते हैं, आंकिक या तारीख प्रकार में और अधिक उद्देश्य से है, तो आप इसे उपयोग करने के लिए कुशल वर्ण के लिए gsub करने में सक्षम हो ight।

+0

बहुत बहुत धन्यवाद! हम कोशिश करेंगे। –

3

मानक lib में CSV लाइब्रेरी का प्रयास करें। यह विकृत सीएसवी के बारे में अधिक क्षमा कर रहा है: http://ruby-doc.org/stdlib/libdoc/csv/rdoc/index.html

+0

टिप के लिए धन्यवाद! यह एक अच्छा फॉलबैक विकल्प है। –

1

smarter_csv रत्न का प्रयास करें - यह प्रक्रिया विधि और क्लीन-अप डेटा से पहले यह प्रयोग किया जाता है

https://github.com/tilo/smarter_csv