wake-up-neo.net

Mongoimport der Json-Datei

Ich habe eine Json-Datei mit etwa 2000 Datensätzen. Jeder Datensatz, der einem Dokument in der Mongo-Datenbank entspricht, wird wie folgt formatiert:

{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"}},

Jeder Datensatz befindet sich in einer einzigen Zeile in der JSON-Datei, und die einzigen Zeilenumbrüche befinden sich am Ende jedes Datensatzes. Daher beginnt jede Zeile im Dokument mit "{jobID:" ... Ich versuche, diese mit folgendem Befehl in eine Mongo-Datenbank zu importieren:

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

Ich erhalte jedoch die folgende Fehlermeldung:

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

Ich weiß nicht, was das Problem ist. Kann jemand eine Lösung empfehlen?

121
amber4478

Ich konnte den Fehler mithilfe der folgenden Abfrage beheben:

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

Hoffentlich hilft das jemandem.

232
amber4478

versuche dies, 

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

Beispiel,

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

Das Problem ist aufgrund Ihres Datumsformats. 

Ich habe dasselbe JSON mit dem geänderten Datum verwendet und es hat funktioniert 

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

hoffe das hilft

42
Srivatsa N

konsole:

mongoimport -d dbName -c collectionName dataFile.js 
16
Andrey

Mit mongoimport können Sie dasselbe erreichen

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

woher, 

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

--drop löscht die Sammlung, falls bereits vorhanden.

14
KARTHIKEYAN.A

Ihre Syntax erscheint völlig korrekt in: 

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

Stellen Sie sicher, dass Sie sich im richtigen Ordner befinden, oder geben Sie den vollständigen Pfad an.

5
Robert Grutza

Ich habe unten Befehl für Export DB verwendet

mongodump --db database_name --collection collection_name

und der folgende Befehl funktionierte für mich, um DB zu importieren

mongorestore --db database_name path_to_bson_file
3
Ravi Hirani

Dieser Befehl funktioniert, wenn keine Sammlung angegeben ist.

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

Mongo Shell nach der Ausführung des Befehls

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
2
Abhi

Führen Sie den Importbefehl in einem anderen Terminal aus. (nicht in Mongo Shell.)

mongoimport --db test --collection user --drop --file ~/downloads/user.json
1
Nija I Pillai

Dies funktioniert bei mir, wenn db mit Benutzername und Passwort

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

dB ohne Benutzername Passwort bitte entfernen -u my_user -p my_pass

Mein Beispiel-Json

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

In Windows können Sie Ihren Befehl Prompcmd cmd verwenden, in Ubuntu können Sie Ihre terminal verwenden, indem Sie den folgenden Befehl eingeben:

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

wenn Sie dann Ihre Mongo-Shell öffnen, werden Sie feststellen, dass Sie Ihren Datenbanknamen überprüfen müssen, wenn Sie diesen Befehl ausführen:

show databases

Ich habe so etwas ausprobiert und es funktioniert tatsächlich:

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

Wenn Sie versuchen, diese Testsammlung zu exportieren:

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

mit mongoexport (das erste mit Date(...) erstellte Datum und das zweite mit new Date(...) erstellte Datum (wenn ISODate(...) verwendet wird, wird das gleiche wie in der zweiten Zeile sein)), so dass die mongoexport-Ausgabe folgendermaßen aussieht

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

Sie sollten also dieselbe Notation verwenden, da der strikte JSON-Typ nicht den Typ Date( <date> ) hat.

Ihr JSON ist ebenfalls nicht gültig: Der Name aller Felder muss in doppelte Anführungszeichen gesetzt werden, mongoimport funktioniert jedoch ohne sie.

Weitere Informationen finden Sie in mongodb documentation und hier .

0
Denis Nikanorov

Lösung: -

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

Beispiel: -

Legen Sie Ihre Datei in den Admin-Ordner: -

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

Führen Sie diesen Befehl auf Ihrem Teminal aus: -

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

Ausgabe: -

[email protected] 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

Für mehr Link

0
Mohit Sharma