2014-06-14 6 views
6

फ़ाइल से डेटा आयात करते समय (मेरे मामले में सीएसवी) mongoimport स्वचालित रूप से प्रत्येक फ़ील्ड के लिए डेटा प्रकार का चयन करें।mongoimport फ़ील्ड प्रकार

क्या विशिष्ट फ़ील्ड के लिए मैन्युअल रूप से डेटा प्रकार चुनना संभव है? मुझे स्थिति का सामना करना पड़ा, जब मेरी फाइल में फ़ोन नंबर होते हैं, जो मैं चाहता हूं और जो मुझे तारों के रूप में व्यवहार करना चाहिए, लेकिन मोंगोइम्पपोर्ट (काफी ठीक से) उन फ़ोन नंबरों को संख्याओं (संख्या लांग) के रूप में मानते हैं।

उत्तर

5

आप क्या कर सकते हैं CSV का उपयोग करके इन डेटा को आयात करना है और फिर मौजूदा डेटा पर अद्यतन डेटा को mongo db में चलाने के लिए इसे इच्छित प्रारूप में रूपांतरित करने के लिए चलाएं।

+1

धन्यवाद। मैंने कोशिश की: db.cdr.find ({}, {dst: 1})। प्रत्येक (फ़ंक्शन (x) {x.dst = '' + x.dst; db.cdr.save (x)}) और यह उम्मीद के रूप में काम किया। नया स्ट्रिंग विकल्प नहीं था। यह इसे सरणी में बदल गया। क्या ऐसा करने का कोई और आसान तरीका है? :) – Jarema

3

दस्तावेज में Type Fidelity अनुभाग देखें:

mongoimport और mongoexport मज़बूती से सभी अमीर BSON डेटा प्रकार की रक्षा नहीं है क्योंकि JSON केवल प्रकार BSON द्वारा समर्थित के एक सबसेट का प्रतिनिधित्व कर सकते हैं। नतीजतन, इन उपकरणों के साथ निर्यात या आयात किया गया डेटा कुछ निष्ठा खो सकता है। अधिक जानकारी के लिए MongoDB विस्तारित JSON देखें।

प्रकारों को संरक्षित करने के लिए mongodump और mongorestore का उपयोग करें।

+0

मुझे लगता है कि मुझे पोस्टग्रेस, या किसी अन्य एसक्यूएल डीबी से डेटा आयात करने की आवश्यकता होने पर mongorestore असंभव लगता है। – Jarema

+0

उस मामले में मैं @Avneesh सुझाव देता हूं, डेटा आयात करता हूं और एक अद्यतन कमांड चलाता हूं। शायद यह सबसे आसान है। आप यहां उदाहरण पा सकते हैं: http://stackoverflow.com/questions/4973095/mongodb-how-to-change-the-type-of-a-field –

6

जब आयात करने सीएसवी/TSV विकल्प --columnsHaveTypes कर सकते हैं कॉलम परिभाषित करने में मदद करता है, लेकिन दस्तावेज बहुत स्पष्ट नहीं लगता MongoDB करने के लिए। आखिरकार सफल होने तक मैंने कई बार कोशिश की। आपको विकल्प --columnsHaveTypes जोड़ना चाहिए और --फील्ड के बाद प्रत्येक कॉलम को बदलें और "(" और ")" से पहले "\" का उपयोग करने वाले रीमेबर को जोड़ना चाहिए। उदाहरण के लिए, बदलने के लिए:

mongoimport -hfoohost -d bardb -c fooc --type tsv --fields col1,col2,col3 --file path/to/file.txt 

में
mongoimport -h foohost -d bardb -c fooc --type tsv --fields col1.int32\(\),col2.double\(\),col3.string\(\) --columnsHaveTypes --file path/to/file.txt 
संबंधित मुद्दे