का उपयोग कर 1 से अधिक जेसन फ़ाइल आयात करें मैं mongodb
पर नया हूं और एक सर्वर से दूसरे सर्वर पर json
फ़ाइल आयात करने के बारे में जानना चाहता हूं। मैंने निम्न आदेश mongoimport -d test -c bik check.json
को आजमाया और यह मेरे लिए ठीक काम करता है। अब मैं जानना चाहता हूं कि कई json
फाइलें हैं, मैं उन्हें एक ही बार में कैसे आयात करूं। मुझे कोई संबंधित दस्तावेज़ नहीं मिला जहां यह लिखा गया है यह संभव नहीं है। कृपया मेरी मदद करें यह संभव है औरmongoimport
उत्तर
आप हमेशा कुछ खोल स्क्रिप्ट लिख सकते हैं।
colls=(mycoll1 mycoll2 mycoll5)
for c in ${colls[@]}
do
mongoimport -d mydb -c $c.json
done
मैं स्वचालित रूप से सभी संग्रह आयात करने के लिए एक और अधिक सुरुचिपूर्ण तरीका के साथ आया था:
ls -1 *.json | sed 's/.json$//' | while read col; do
mongoimport -d db_name -c $col < $col.json;
done
मुझे आशा है कि यह उपयोगी है।
एक आकर्षण की तरह काम किया था! मुझे वास्तव में tsv फ़ाइलों को आयात करने की आवश्यकता थी, इसलिए मुझे '--headerline' और '--type tsv' बहुत सरल शामिल करना था। धन्यवाद – agarcian
विंडोज बैच संस्करण:
@echo off
for %%f in (*.json) do (
"mongoimport.exe" --jsonArray --db databasename --collection collectioname --file %%~nf.json
)
धन्यवाद टॉमी। मुझे - jsonArray को छोड़ना पड़ा क्योंकि मेरे पास एकाधिक जेसन फाइलें थीं जो [] में संलग्न नहीं थीं – ankit9j
इस Mac OS X
find . -regex '.*/[^/]*.json' | xargs -L 1 mongoimport --db DB_NAME -u USER_NAME -p PASSWORD --collection COLLECTION_NAME --file
में मेरे लिए काम किया खिड़कियों बल्ला फ़ाइल के लिए। यदि आपके पास फ़ोल्डर में जेसन फाइलों की एक सूची है तो यह बेहतर होगा।
for filename in *; do mongoimport --db <Database> --collection <Collection Name> --file $filename; done
में नाम आप इस तरह से भी से यह कर सकते हैं से मेल खाता है यह मैक में भी काम करता है)।
आपके पास एक ही फ़ोल्डर में सभी जेसन फ़ाइलें होनी चाहिए और फ़ाइल का नाम संग्रह होना चाहिए जो आपके डेटाबेस में आयात किया जाएगा।
तो, चलिए शुरू करें, उस फ़ोल्डर को खोलें जिसमें आपकी जेसन फाइलें हों। अपने डेटाबेस नाम के <DATABASE>
बदलें, तो नीचे लाइन निष्पादित करें:
for collection in $(ls | cut -d'.' -f1); do mongoimport --db <DATABASE> --collection ${collection} --file ${collection}.json; done
लेकिन वहाँ क्या चल रहा है?
सबसे पहले, आपको यह ध्यान रखना होगा कि कोष्ठक पहले निष्पादित किए जाएंगे। इस मामले में, यह प्रत्येक फाइल का नाम प्राप्त करने वाली सभी फ़ाइलों की एक सूची बनाता है (इसका विस्तार हटा रहा है)।
दूसरे, सब सूची एक स्थानीय चर कहा संग्रह में "के लिए" एक पाश में जोड़ दिया जाएगा
तीसरा, "do" आयात लाइन पर अमल (इस वेरिएबल का नाम कुछ भी आप चाहते हैं हो सकता है) (*)
अंत में "किया गया", लूप खत्म करें।
(*) आयात लाइन "mongoimport" द्वारा रचित है जिसके लिए डेटाबेस नाम "--db", संग्रह नाम "--collection", और फ़ाइल नाम "--file" की आवश्यकता होती है। इन आवश्यकताओं को "के लिए" सामग्री पर बनाए गए चर "$ संग्रह" द्वारा भर दिया गया है
मुझे उम्मीद है कि किसी की मदद की जाएगी!शुभकामनाएं दोस्तों :)
मैं कितने संग्रह कुशलता से केवल लिनक्स के टर्मिनल का उपयोग कर आयात करने के लिए (दिखाने जा रहा हूँ: और संग्रह नाम फ़ाइलों
@echo off
for %%f in (*.json) do (
"mongoimport.exe" --db databasename --collection %%~nf --drop --file %%f
)
pause
- 1. नेस्टेड संरचना में सीएसवी पढ़ने के लिए mongoimport का उपयोग करना?
- 2. MongoDB
- 3. कैसे आयातित मोंगोड आयात?
- 4. अनुकूलन: मोंगो करने के लिए एक स्ट्रीमिंग एपीआई से JSON डम्पिंग
- 5. मोंगोडम्प द्वारा डंप किए गए डेटा का उपयोग कैसे करें?
- 6. पाइथन
- 7. खोल से संग्रह तक नहीं पहुंच सकता - सिंटेक्स त्रुटि: गायब; बयान से पहले (खोल): 1
- 8. प्रदर्शन परीक्षण के लिए स्काला के साथ मोंगोडीबी में 100 मिलियन रिकॉर्ड कैसे लोड करें?
धन्यवाद जादू जादू – user850234
बस एक प्रश्न है। क्या निर्देशिका नाम को परिभाषित करना संभव नहीं है और फ़ाइल नाम निर्दिष्ट करने के बजाय सभी 'json' फ़ाइलों को आयात करने के लिए निर्देशिका का पथ निर्दिष्ट करें। ऐसा इसलिए है क्योंकि अगर कई फाइलें हैं तो हमें सभी फाइलनामों को निर्दिष्ट करना होगा और फिर 'लूप' करना होगा जो प्रत्येक फाइल के लिए 'mongoimport' कमांड मैन्युअल रूप से करने जैसा है। क्या यह अधिक गतिशील रूप से किया जा सकता है? – user850234
मैंने कोशिश की और यह काम नहीं किया। हालांकि, यह 'mongorestore' के साथ काम करता है। –