Json फ़ाइल का Mongoimport


173

मेरे पास एक json फ़ाइल है जिसमें लगभग 2000 रिकॉर्ड हैं। प्रत्येक रिकॉर्ड जो मोंगो डेटाबेस में एक दस्तावेज़ के अनुरूप होगा, उसे निम्नानुसार स्वरूपित किया गया है:

{jobID:"2597401",
account:"XXXXX",
user:"YYYYY",
pkgT:{"pgi/7.2-5":{libA:["libpgc.so"],flavor:["default"]}},     
startEpoch:"1338497979",
runTime:"1022",
execType:"user:binary",
exec:"/share/home/01482/XXXXX/appker/ranger/NPB3.3.1/NPB3.3-MPI/bin/ft.D.64",
numNodes:"4",
sha1:"5a79879235aa31b6a46e73b43879428e2a175db5",
execEpoch:1336766742,
execModify: new Date("Fri May 11 15:05:42 2012"),
startTime: new Date("Thu May 31 15:59:39 2012"),
numCores:"64",
sizeT:{bss:"1881400168",text:"239574",data:"22504"}},

JSON फ़ाइल में प्रत्येक रिकॉर्ड एक पंक्ति में है, और प्रत्येक रिकॉर्ड के अंत में एकमात्र पंक्ति विराम है। इसलिए, दस्तावेज़ में प्रत्येक पंक्ति "{jobID:" के साथ शुरू होती है ... मैं निम्नलिखित मानदंड का उपयोग करते हुए इन्हें एक मोंगो डेटाबेस में आयात करने का प्रयास कर रहा हूं:

mongoimport --db dbName --collection collectionName --file fileName.json

हालाँकि, मुझे निम्न त्रुटि मिलती है:

Sat Mar  2 01:26:12 Assertion: 10340:Failure parsing JSON string near: ,execModif
0x10059f12b 0x100562d5c 0x100562e9c 0x10025eb98 0x10000e643 0x100010b60 0x10055c4cc 0x1000014b7    
0x100001454 
 0   mongoimport                         0x000000010059f12b _ZN5mongo15printStackTraceERSo + 43
 1   mongoimport                         0x0000000100562d5c _ZN5mongo11msgassertedEiPKc + 204
 2   mongoimport                         0x0000000100562e9c _ZN5mongo11msgassertedEiRKSs + 12
 3   mongoimport                         0x000000010025eb98 _ZN5mongo8fromjsonEPKcPi + 1576
 4   mongoimport                         0x000000010000e643          
                                         _ZN6Import8parseRowEPSiRN5mongo7BSONObjERi + 2739
 5   mongoimport                         0x0000000100010b60 _ZN6Import3runEv + 7376
 6   mongoimport                         0x000000010055c4cc _ZN5mongo4Tool4mainEiPPc + 5436
 7   mongoimport                         0x00000001000014b7 main + 55
 8   mongoimport                         0x0000000100001454 start + 52
Sat Mar  2 01:26:12 exception:BSON representation of supplied JSON is too large: Failure parsing    
    JSON string near: ,execModif
Sat Mar  2 01:26:12 
Sat Mar  2 01:26:12 imported 0 objects
Sat Mar  2 01:26:12 ERROR: encountered 1941 errors

मुझे नहीं पता कि समस्या क्या है। क्या कोई समाधान सुझा सकता है?

जवाबों:


301

मैं निम्नलिखित क्वेरी का उपयोग करके त्रुटि को ठीक करने में सक्षम था:

mongoimport --db dbName --collection collectionName --file fileName.json --jsonArray

उम्मीद है कि यह किसी के लिए उपयोगी है।


28
--jsonArrayटिकट होना, हाँ?
डुडो

4
इसका संक्षिप्त रूप mongoimport -d <database> -c <collection> --jsonArray -f <filename>.json
एडम फ़रना

1
कभी-कभी उपयोगकर्ता / पासवर्ड की आवश्यकता होती हैmongoimport --db dbName --collection collectionName --file fileName.json --jsonArray -u ser -p password
डिएगो आंद्रेस डीज़ एस्पिनोज़ा

@ DiegoAndrésDíazEspinoza कमेंट में जोड़ते हुए, कि मेरे मामले में मुझे "SCRAM-SHA-1" तंत्र का उपयोग करने में असमर्थ होने की त्रुटि मिली। इसलिए, एक खोज के बाद, मैंने पाया कि यह authenticationDatabaseउत्तर स्टैकओवरफ़्लो . com/a/ 58067928/ 6791222 में उल्लेखित कीवर्ड को याद कर रहा है ।
फिरोज खान

61

इसे इस्तेमाल करे,

mongoimport --db dbName --collection collectionName <fileName.json

उदाहरण,

mongoimport --db foo --collection myCollections < /Users/file.json
connected to: *.*.*.*
Sat Mar  2 15:01:08 imported 11 objects

समस्या आपके द्वारा दिनांक स्वरूप के कारण है।

मैंने नीचे के रूप में संशोधित तिथि के साथ एक ही JSON का उपयोग किया और यह काम किया

{jobID:"2597401",
account:"XXXXX",
user:"YYYYY",
pkgT:{"pgi/7.2-5":{libA:["libpgc.so"],flavor:["default"]}},     
startEpoch:"1338497979",
runTime:"1022",
execType:"user:binary",
exec:"/share/home/01482/XXXXX/appker/ranger/NPB3.3.1/NPB3.3-MPI/bin/ft.D.64",
numNodes:"4",
sha1:"5a79879235aa31b6a46e73b43879428e2a175db5",
execEpoch:1336766742,
execModify:{"$date" : 1343779200000},
startTime:{"$date" : 1343779200000},
numCores:"64",
sizeT:{bss:"1881400168",text:"239574",data:"22504"}}

उम्मीद है की यह मदद करेगा


मेरे पास प्रश्न के समान त्रुटि है ... क्या इस आयात की जांच की?
डेनिस निकानोरोव

मैंने आपके द्वारा सुझाई गई तारीखों को समायोजित किया और उस विशेष त्रुटि से छुटकारा मिला। हालाँकि, अब मुझे एक नया मिल रहा है। यहाँ नई त्रुटि है:
amber4478

क्या आप नए JSON और Mongo के किस संस्करण को पेस्ट कर सकते हैं?
श्रीवत्स एन

मैं क्वेरी के अंत में --jsonArray जोड़कर त्रुटि को ठीक करने में सक्षम था।
amber4478

इसके ""आसपास का उपयोग करने की आवश्यकता है .json, अगर इसमें फ़ोल्डर का नाम है, इसमें रिक्त स्थान हैं। For Eg जैसे जवाब में Abhi। यह काम नहीं करेगा, ""इसे आयात करने के लिए json फ़ाइल स्थान में जोड़ने की आवश्यकता है। D:\>mongoimport --db testimport --collection small_zip < D:\Dev\test test\small_zips.json The system cannot find the file specified. यह काम करता है D:\>mongoimport --db testimport --collection small_zip < "D:\Dev\test test\small_zips.json" 2016-04-17T18:32:34.328+0800 connected to: localhost 2016-04-17T18:32:34.610+0800 imported 200 documents
अभिजीत

22

Mongoimport का उपयोग करके आप उसी को प्राप्त कर सकते हैं

mongoimport --db test --collection user --drop --file ~/downloads/user.json

कहाँ पे,

test - Database name
user - collection name
user.json - dataset file

--drop यदि पहले से मौजूद है तो संग्रह को छोड़ दें।



6

मैंने निर्यात डीबी के लिए कमांड का उपयोग किया है

mongodump --db database_name --collection collection_name

और नीचे कमान ने मेरे लिए डीबी आयात करने का काम किया

mongorestore --db database_name path_to_bson_file

6

आपका सिंटैक्स पूरी तरह से सही प्रतीत होता है:

mongoimport --db dbName --collection collectionName --file fileName.json

सुनिश्चित करें कि आप सही फ़ोल्डर में हैं या पूर्ण पथ प्रदान करते हैं।


3

किसी अन्य टर्मिनल में आयात आदेश चलाएँ। (मोंगो शेल के अंदर नहीं।)

mongoimport --db test --collection user --drop --file ~/downloads/user.json

3

विंडोज़ में आप अपने कमांड प्रोमपैकड का उपयोग कर सकते हैं cmd, उबंटू में आप terminalनिम्न कमांड टाइप करके अपने उपयोग कर सकते हैं :

mongoimport  -d  your_database_name  -c  your_collection_name  /path_to_json_file/json_file_name.json

फिर जब आप अपना मेन्गो खोलते हैं, तो आप इस कमांड को चलाते समय अपने डेटाबेस_नाम की जाँच करेंगे:

show databases

2

यह कमांड काम करता है जहां कोई संग्रह निर्दिष्ट नहीं है।

mongoimport --db zips "\MongoDB 2.6 Standard\mongodb\zips.json"

कमांड निष्पादित करने के बाद मैंगो शेल

connected to: 127.0.0.1
no collection specified!
using filename 'zips' as collection.
2014-09-16T13:56:07.147-0400 check 9 29353
2014-09-16T13:56:07.148-0400 imported 29353 objects

1

मैंने कुछ इस तरह की कोशिश की और यह वास्तव में काम करता है:

mongoimport --db dbName --file D:\KKK\NNN\100YWeatherSmall.data.json

1

Usrname और पासवर्ड के साथ db होने पर यह मेरे साथ काम करता है

mongoimport --db YOUR_DB --collection MyCollection --file /your_path/my_json_file.json -u my_user -p my_pass

db बिना यूजरनेम पासवर्ड हटाएं -u my_user -p my_pass

मेरा नमूना json

{ 
    "_id" : ObjectId("5d11c815eb946a412ecd677d"), 
    "empid" : NumberInt(1), 
    "name" : "Rahul"
}
{ 
    "_id" : ObjectId("5d11c815eb946a412ecd677e"), 
    "empid" : NumberInt(2), 
    "name" : "Rahul"
}

1

उपाय:-

mongoimport --db databaseName --collection tableName --file filepath.json

उदाहरण:-

अपनी फ़ाइल को व्यवस्थापक फ़ोल्डर में रखें: -

C:\Users\admin\tourdb\places.json

इस आज्ञा को अपने मंदिर पर चलाएं: -

mongoimport --db tourdb --collection places --file ~/tourdb/places.json

आउटपुट: -

admin@admin-PC MINGW64 /
$ mongoimport --db tourdb --collection places --file ~/tourdb/places.json
2019-08-26T14:30:09.350+0530 connected to: localhost
2019-08-26T14:30:09.447+0530 imported 10 documents

अधिक लिंक के लिए


1
  1. उदाहरण के लिए "सी: \ person.json" जैसे जॅसन फाइल की कॉपी कॉपी करें
  2. C: \ Program Files \ MongoDB \ Server \ 4.2 \ bin पर जाएं
  3. उस mongodb बिन फ़ोल्डर पर cmd खोलें और इस कमांड को रन करें

mongoimport --jsonArray --db dbname - संग्रह संग्रहनाम - फ़ाइल FilePath

उदाहरण mongoimport --jsonArray --db learnmongo --collection person --file C: \ person .json


0

यदि आप इस परीक्षण संग्रह को निर्यात करने का प्रयास करते हैं:

> db.test.find()
{ "_id" : ObjectId("5131c2bbfcb94ddb2549d501"), "field" : "Sat Mar 02 2013 13:13:31 GMT+0400"}
{"_id" : ObjectId("5131c2d8fcb94ddb2549d502"), "field" : ISODate("2012-05-31T11:59:39Z")}

mongoexport के साथ (पहली तारीख के साथ बनाई गई Date(...)और दूसरी के साथ बनाई गई new Date(...)(यदि उपयोग ISODate(...)दूसरी पंक्ति की तरह ही होगी)) तो mongoexport आउटपुट इस तरह दिखेगा:

{ "_id" : { "$oid" : "5131c2bbfcb94ddb2549d501" }, "field" : "Sat Mar 02 2013 13:13:31 GMT+0400" }
{ "_id" : { "$oid" : "5131c2d8fcb94ddb2549d502" }, "field" : { "$date" : 1338465579000 } }

इसलिए आपको समान नोटेशन का उपयोग करना चाहिए, क्योंकि सख्त JSON का प्रकार नहीं है Date( <date> )

साथ ही आपका JSON मान्य नहीं है: सभी फ़ील्ड नाम को दोहरे उद्धरण चिह्नों में संलग्न किया जाना चाहिए, लेकिन उनके बिना मोंगूमपोर्ट ठीक काम करता है।

आप mongodb प्रलेखन और यहाँ अतिरिक्त जानकारी पा सकते हैं ।


मैंने आपके द्वारा सुझाई गई तारीखों को समायोजित किया और उस विशेष त्रुटि से छुटकारा मिला। हालाँकि, अब मुझे एक नया मिल रहा है। यहाँ नई त्रुटि है: 'Sat Mar 2 15:22:07 अपवाद: आपूर्ति किए गए JSON का BSON प्रतिनिधित्व बहुत बड़ा है: JSON स्ट्रिंग को पास करने में विफलता: डेटा: "1949 Sat Mar 2 15:22:07 Sat Mar 2 15:22 : 07 आयातित 0 ऑब्जेक्ट्स Sat Mar 2 15:22:07 ERROR: 34763 त्रुटियों का सामना करना पड़ा '
amber4478

मुझे लगता है कि यह फ़ील्ड में एक और त्रुटि हैsizeT:{data: "1949..."}}
डेनिस

0

संभावित उत्तर के लिए थोड़ी देर, नए लोगों की मदद कर सकती है। यदि आपके पास डेटाबेस के कई उदाहरण हैं:

mongoimport --host <host_name>:<host_port> --db <database_name> --collection <collection_name>  --file <path_to_dump_file> -u <my_user> -p <my_pass>

आवश्यक साख मानते हुए, अन्यथा इस विकल्प को हटा दें।


0

उत्तर की संख्या दी गई है, हालांकि मैं अपना आदेश देना चाहूंगा। मैं अक्सर आता था। यह किसी की मदद कर सकता है।

mongoimport original.json -d databaseName -c yourcollectionName --jsonArray --drop
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.