জসন ফাইলের মোঙ্গোইম্পোর্ট


173

আমার কাছে প্রায় 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 ফাইলে একক লাইনে থাকে এবং প্রতিটি রেকর্ডের শেষে একমাত্র লাইন বিরতি থাকে। সুতরাং, নথির প্রতিটি লাইন "{জবআইডিআইডি:" দিয়ে শুরু হয় ... আমি নিম্নলিখিত কমান্ডটি ব্যবহার করে এগুলি একটি মঙ্গো ডাটাবেসে আমদানি করার চেষ্টা করছি:

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
ডিয়েগো অ্যান্ড্রেস ডায়েজ এস্পিনোজা

@ ডিয়েগোআ্যান্ড্রিসডাজ এএসপিনোজা মন্তব্যে যোগ করা হয়েছে যে আমার ক্ষেত্রে আমি "এসসিআরএএম-এসএএইচ -1 'মেকানিজম ব্যবহার করে প্রমাণীকরণ করতে অক্ষম" এর ত্রুটি পেয়েছি। সুতরাং, একটি অনুসন্ধানের পরে, আমি খুঁজে পেয়েছি যে এটি স্ট্যাকওভারফ্লো . com/a/58067928/6791222authenticationDatabase উত্তরে উল্লিখিত হিসাবে কীওয়ার্ডটি হারিয়েছে ।
ফিরোজ খান

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

ইস্যুটি আপনার তারিখের ফর্ম্যাটটির কারণে।

আমি নীচের মতো পরিবর্তিত তারিখের সাথে একই জেএসএন ব্যবহার করেছি এবং এটি কার্যকর হয়েছে

{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

আপনি কি নতুন জেএসওএন এবং মঙ্গোর কোন সংস্করণ চালু করছেন?
শ্রীভাতস এন

আমি কোয়েরির শেষে --jsonArray যুক্ত করে ত্রুটিটি ঠিক করতে সক্ষম হয়েছি।
amber4478

এর ""চারপাশে ব্যবহার করা দরকার .json, যদি এতে ফোল্ডারের নামের অন্তর্ভুক্ত থাকে তবে এর মধ্যে ফাঁকা স্থান রয়েছে। নিচে 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 --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

যখন ইউজারনেম এবং পাসওয়ার্ড সহ ডিবি আমার সাথে এটি কাজ করে

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

ব্যবহারকারীর পাসওয়ার্ড ছাড়াই ডিবি দয়া করে সরান -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

আরও লিঙ্কের জন্য


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")}

মঙ্গোএক্সপোর্টের সাথে (প্রথম তারিখটি তৈরি করা Date(...)এবং দ্বিতীয়টি দিয়ে তৈরি করা হয়েছে new Date(...)(যদি ব্যবহারটি ISODate(...)দ্বিতীয় লাইনের মতো হয় তবে)) তাই মঙ্গোএক্সপোর্ট আউটপুটটি এটির মতো দেখাবে:

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

সুতরাং আপনার অনুরূপ স্বরলিপি ব্যবহার করা উচিত, কারণ কঠোর JSON এর টাইপ নেই Date( <date> )

এছাড়াও আপনার জেএসওএন বৈধ নয়: সমস্ত ক্ষেত্রের নাম অবশ্যই ডাবল উদ্ধৃতিতে আবদ্ধ থাকতে হবে, তবে মঙ্গোইম্পোর্টগুলি এগুলি ছাড়া ঠিক কাজ করে।

আপনি মঙ্গডব ডকুমেন্টেশনে এবং এখানে অতিরিক্ত তথ্য পেতে পারেন ।


আপনার পরামর্শ অনুসারে তারিখগুলি সামঞ্জস্য করেছি এবং এটি সেই বিশেষ ত্রুটি থেকে মুক্তি পেয়েছে। তবে, এখন আমি একটি নতুন পেয়ে যাচ্ছি। এখানে নতুন ত্রুটিটি রয়েছে: 'শনিবার মার্চ 2 15:22:07 ব্যতিক্রম: সরবরাহিত জেএসওনের বিএসওএন প্রতিনিধিত্ব খুব বড়: জেএসএন স্ট্রিংকে পার্সিংয়ে ব্যর্থতা: ডেটা: "1949 শনি মার্চ 2 15:22:07 শনিবার মার্চ 2 15:22 : 07 আমদানি করা 0 টি জিনিস শনিবার 2 মার্চ 15:22:07 ত্রুটি: 34763 ত্রুটির মুখোমুখি হয়েছে '
অ্যাম্বার 4478

আমি মনে করি এটি আবার ত্রুটি ফিল্ডে ফেরানো হয়েছে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
  1. যেমন "সি: \ ব্যক্তি.জসন" উদাহরণস্বরূপ জেসন ফাইলের পাথ অনুলিপি করুন
  2. সি: \ প্রোগ্রাম ফাইলগুলি \ মঙ্গোডিবি \ সার্ভার \ 4.2 \ বিনে যান
  3. সেই মংডোব বিন ফোল্ডারে সিএমডি খুলুন এবং এই কমান্ডটি চালান

মঙ্গোইম্পোর্ট - জসনআরএ - ডিবি ডিবি নাম - সংগ্রহের নাম - ফাইল ফাইলপথ

উদাহরণস্বরূপ মঙ্গোইম্পোর্ট - জসনআরে - ডিবি শিখুন মঙ্গো - নির্বাচনকারী ব্যক্তি - ফাইল সি: \ ব্যক্তি.জসন


0

আমি আমার আদেশ দিতে চাইলেও উত্তরের সংখ্যা দেওয়া হয়েছে। আমি প্রায়শই অভ্যস্ত। এটি কারও পক্ষে সহায়তা করতে পারে।

mongoimport original.json -d databaseName -c yourcollectionName --jsonArray --drop
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.