MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

एक CSV फ़ाइल में MongoDB क्वेरी परिणाम कैसे निर्यात करें

MongoDB डेटाबेस टूल्स में mongoexport . नामक एक उपयोगिता शामिल है जो आपको MongoDB डेटा को CSV या JSON फ़ाइल में निर्यात करने में सक्षम बनाता है।

इस उपयोगिता के साथ आप जो चीजें कर सकते हैं उनमें से एक निर्यात क्वेरी परिणाम है। यह लेख आपको mongoexport . का उपयोग करने का तरीका दिखाता है MongoDB क्वेरी परिणामों को CSV फ़ाइल में निर्यात करने के लिए।

सिंटैक्स

mongoexport . के लिए सिंटैक्स इस तरह जाता है:

mongoexport --collection=<coll> <options> <connection-string>

आपको mongoexport चलाने की जरूरत है आपके सिस्टम की कमांड लाइन (जैसे एक नया टर्मिनल या कमांड प्रॉम्प्ट विंडो) से कमांड।

mongoexport न चलाएं mongo . से आदेश सीप।

उदाहरण

निम्न उदाहरण कोड किसी क्वेरी के परिणामों को CSV फ़ाइल में निर्यात करता है:

mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --query='{ "type": "Dog" }' --out=data/dogs.csv

यह एक क्वेरी निर्यात करता है जो pets . नामक संग्रह को क्वेरी करता है PetHotel . में डेटाबेस। क्वेरी dogs.csv . नामक फ़ाइल में निर्यात की जाती है data/ में फ़ोल्डर।

यदि फ़ोल्डर मौजूद नहीं है, तो इसे बनाया गया है। फ़ाइल के साथ ही। वैसे, यह मानता है कि निर्दिष्ट स्थान पर फ़ाइल लिखने में कोई अनुमति समस्या नहीं है।

इस उदाहरण में मैंने कोई होस्ट, पोर्ट, प्रमाणीकरण आदि निर्दिष्ट नहीं किया है, इसलिए यह डिफ़ॉल्ट लोकलहोस्ट पोर्ट नंबर 27017 पर चल रहे MongoDB इंस्टेंस से संग्रह को निर्यात करता है। ।

नीचे हमारे द्वारा प्रदान किए गए मापदंडों की व्याख्या है।

<थ>विवरण
पैरामीटर
--db
या
-d
उस डेटाबेस को निर्दिष्ट करता है जिस पर mongoexport चलाना है . इस मामले में, डेटाबेस को PetHotel . कहा जाता है .
यह पैरामीटर वैकल्पिक रूप से -d . का उपयोग करके पारित किया जा सकता है (--db . के बजाय )।
--collection
या
-c
उस संग्रह को निर्दिष्ट करता है जिसे हम निर्यात करना चाहते हैं (या उसके विरुद्ध क्वेरी चलाएँ)। इस मामले में, संग्रह को pets . कहा जाता है .
यह पैरामीटर वैकल्पिक रूप से -c . के रूप में पारित किया जा सकता है (--collection . के बजाय )।
--type निर्यात की गई फ़ाइल प्रकार निर्दिष्ट करता है। इस मामले में हम csv . निर्दिष्ट करते हैं इसे CSV फ़ाइल में निर्यात करने के लिए।
--fields उन फ़ील्ड को निर्दिष्ट करता है जिन्हें हम निर्यात करना चाहते हैं। हमारे पास सभी क्षेत्रों या कुछ को निर्यात करने का विकल्प है। आपको यहां प्रत्येक को अल्पविराम से अलग करके सूचीबद्ध करने की आवश्यकता है। सीएसवी को निर्यात करते समय, फ़ील्ड नाम निर्दिष्ट करना एक आवश्यकता है। आप --fields . के द्वारा ऐसा कर सकते हैं पैरामीटर या --fieldFile पैरामीटर (उस पर बाद में)।
--query
या
-q
उस क्वेरी को निर्दिष्ट करता है जिसके लिए हम निर्यात करना चाहते हैं। इसे सिंगल कोट्स में संलग्न किया जाना चाहिए (ताकि यह आपके शेल के साथ इंटरैक्ट न करे)।
इस पैरामीटर को -q . का उपयोग करके भी पास किया जा सकता है ।
--out निर्यात की गई फ़ाइल का नाम निर्दिष्ट करता है और यह कहां स्थित होगा। यदि आप फ़ाइल नाम निर्दिष्ट नहीं करते हैं, mongoexport मानक आउटपुट के लिए डेटा लिखता है (stdout )।

निर्यात की गई फ़ाइल की जांच करें

आइए सत्यापित करें कि निर्यात कार्रवाई अपेक्षित रूप से काम कर रही है।

सबसे पहले, क्वेरी को मूल संग्रह के विरुद्ध चलाते हैं।

use PetHotel
db.pets.find({ "type": "Dog" })

परिणाम:

{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 }
{ "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }

तो हम देख सकते हैं कि 4 कुत्ते हैं, सभी एक ही फ़ील्ड के साथ हैं जो हमने अपने निर्यात ऑपरेशन में निर्दिष्ट किए हैं।

अब एक्सपोर्ट की गई फाइल को खोलें dogs.csv अंदर क्या है देखने के लिए:

_id,name,type,weight
1,Wag,Dog,20
2,Bark,Dog,10
6,Fetch,Dog,17
7,Jake,Dog,30

ठीक है, इसलिए सभी डेटा अपेक्षित रूप से निर्यात की गई फ़ाइल में है।

कम फ़ील्ड निर्यात करें

आप --fields . के साथ कम फ़ील्ड निर्दिष्ट कर सकते हैं यदि आप चाहें तो पैरामीटर।

उदाहरण:

mongoexport --db=PetHotel --collection=pets --type=csv --fields=name,weight --query='{ "type": "Dog" }' --out=data/dogs.csv

परिणामी फ़ाइल:

name,weight
Wag,20
Bark,10
Fetch,17
Jake,30

कॉलम हेडर हटाएं

आप देखेंगे कि पिछले उदाहरणों में निर्यात की गई फ़ाइल में कॉलम हेडर शामिल थे।

आपके पास फ़ाइल को बिना निर्यात करने का विकल्प भी है कॉलम हेडर। ऐसा करने के लिए, --noHeaderLine . का उपयोग करें पैरामीटर।

उदाहरण:

mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --query='{ "type": "Dog" }' --noHeaderLine --out=data/dogs.csv

अब जब मैं निर्यात की गई फ़ाइल खोलता हूं, तो कोई कॉलम हेडर नहीं होता है:

1,Wag,Dog,20
2,Bark,Dog,10
6,Fetch,Dog,17
7,Jake,Dog,30

फ़ील्ड नामों के लिए फ़ाइल का उपयोग करें

आप --field . को बदल सकते हैं --fieldFile . के साथ पैरामीटर फ़ाइल का नाम निर्दिष्ट करने के लिए पैरामीटर जिसमें वे फ़ील्ड नाम हैं जिन्हें आप निर्यात करना चाहते हैं।

mongoexport --db=PetHotel --collection=pets --type=csv --fieldFile=data/dogs_fields.txt --query='{ "type": "Dog" }' --out=data/dogs.csv

फ़ील्ड वाली फ़ाइल में फ़ील्ड सूचीबद्ध होनी चाहिए, प्रति पंक्ति एक।

यहाँ क्या है dogs_fields.txt इस उदाहरण के लिए फ़ाइल इस तरह दिखती है:

name
type
weight

इसके परिणामस्वरूप निर्यात की गई फ़ाइल की सामग्री इस तरह दिख रही है:

name,type,weight
Wag,Dog,20
Bark,Dog,10
Fetch,Dog,17
Jake,Dog,30

कॉलम का क्रम बदलना

आप फ़ील्ड के क्रम को निर्यात करने के लिए स्विच कर सकते हैं। उनका अंतर्निहित दस्तावेज़ के समान क्रम में होना आवश्यक नहीं है।

उदाहरण के लिए, यह कोड:

mongoexport --db=PetHotel --collection=pets --type=csv --fields=type,name,weight,_id --query='{ "type": "Dog" }' --out=data/dogs.csv

निम्न CSV फ़ाइल में परिणाम:

type,name,weight,_id
Dog,Wag,20,1
Dog,Bark,10,2
Dog,Fetch,17,6
Dog,Jake,30,7

पहुंच नियंत्रण/प्रमाणीकरण

यदि आप लोकलहोस्ट का उपयोग नहीं कर रहे हैं, तो आप --host . का उपयोग कर सकते हैं होस्ट निर्दिष्ट करने के लिए पैरामीटर, और --port पोर्ट निर्दिष्ट करने के लिए। आप --username . का भी उपयोग कर सकते हैं उपयोगकर्ता नाम निर्दिष्ट करने के लिए पैरामीटर और --password पासवर्ड के लिए। यदि आप पासवर्ड पैरामीटर को छोड़ देते हैं, तो आपको इसके लिए संकेत दिया जाएगा। एक --authenticationDatabase भी है प्रमाणीकरण डेटाबेस निर्दिष्ट करने के लिए पैरामीटर जहां उपयोगकर्ता बनाया गया है।

उदाहरण:

mongoexport --host=myhost.example.com --port=37017 --username=homer --authenticationDatabase=admin --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --query='{ "type": "Dog" }' --out=data/dogs.csv

mongoexport की जांच करें

mongoexport MongoDB डेटाबेस टूल्स पैकेज का हिस्सा है। MongoDB डेटाबेस टूल्स MongoDB के साथ काम करने के लिए कमांड-लाइन उपयोगिताओं का एक सूट है।

यदि आप सुनिश्चित नहीं हैं कि आपके पास MongoDB डेटाबेस टूल्स/mongoexport है या नहीं स्थापित है, जाँच करने के लिए अपने टर्मिनल या कमांड प्रॉम्प्ट में निम्न कमांड चलाने का प्रयास करें:

mongoexport --version

यदि आपके पास है, तो आपको संस्करण की जानकारी आदि देखनी चाहिए। यदि आपके पास यह नहीं है, तो आप इसे अपने सिस्टम पर स्थापित करने के लिए MongoDB वेबसाइट पर इंस्टॉलेशन निर्देशों का उपयोग कर सकते हैं।

कहां कमांड चलाना है?

मत भूलो, आपको mongoexport चलाने की आवश्यकता है आपके सिस्टम की कमांड लाइन (जैसे एक नया टर्मिनल या कमांड प्रॉम्प्ट विंडो) से कमांड।


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB आंतरिक सूची में कोई तत्व कैसे सम्मिलित करें?

  2. मोंगोडीबी और काफ्का के साथ नोएसक्यूएल डेटा स्ट्रीमिंग

  3. मोंगोडब में अधिकतम और न्यूनतम

  4. उल्का में समग्र कार्य का उपयोग कैसे करें

  5. कमांड लाइन से MongoDB में डेटाबेस कैसे छोड़ें