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?
Ich konnte den Fehler mithilfe der folgenden Abfrage beheben:
mongoimport --db dbName --collection collectionName --file fileName.json --jsonArray
Hoffentlich hilft das jemandem.
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
konsole:
mongoimport -d dbName -c collectionName dataFile.js
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.
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.
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
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
Führen Sie den Importbefehl in einem anderen Terminal aus. (nicht in Mongo Shell.)
mongoimport --db test --collection user --drop --file ~/downloads/user.json
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"
}
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
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 .
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