Ich habe eine JSON-Datei, die aus ungefähr 2000 Datensätzen besteht. Jeder Datensatz, der einem Dokument in der Mongo-Datenbank entspricht, ist 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 der JSON-Datei in einer einzelnen Zeile, und die einzigen Zeilenumbrüche befinden sich am Ende jedes Datensatzes. Daher beginnt jede Zeile im Dokument mit "{jobID:" ... Ich versuche, diese mit dem folgenden Befehl in eine Mongo-Datenbank zu importieren:
mongoimport --db dbName --collection collectionName --file fileName.json
Ich erhalte jedoch den folgenden Fehler:
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, wo das Problem liegt. Kann jemand eine Lösung empfehlen?
json
mongodb
import
mongoimport
amber4478
quelle
quelle
--jsonArray
das Ticket sein, ja?mongoimport -d <database> -c <collection> --jsonArray -f <filename>.json
.mongoimport --db dbName --collection collectionName --file fileName.json --jsonArray -u ser -p password
authenticationDatabase
wie in der Antwort stackoverflow.com/a/58067928/6791222 erwähnt .Versuche dies,
Beispiel,
Das Problem liegt an Ihrem Datumsformat.
Ich habe das gleiche JSON mit dem unten angegebenen Änderungsdatum verwendet und es hat funktioniert
hoffe das hilft
quelle
""
um das verwendet werden.json
, wenn es Ordnernamen enthält, enthält Leerzeichen. Beantwortet von Abhi unten Für zB Dies funktioniert nicht, muss zum""
json-Dateispeicherort hinzugefügt werden , um es zu importieren.D:\>mongoimport --db testimport --collection small_zip < D:\Dev\test test\small_zips.json The system cannot find the file specified.
Dies funktioniertD:\>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
Mit mongoimport können Sie dasselbe erreichen
wo,
--drop
ist die Sammlung löschen, wenn bereits vorhanden.quelle
Konsole:
quelle
Ich habe den folgenden Befehl für den Export der Datenbank verwendet
und unten Befehl funktionierte für mich, um DB zu importieren
quelle
Ihre Syntax erscheint völlig korrekt in:
Stellen Sie sicher, dass Sie sich im richtigen Ordner befinden, oder geben Sie den vollständigen Pfad an.
quelle
Führen Sie den Importbefehl in einem anderen Terminal aus. (Nicht in der Mongo-Muschel.)
quelle
In Windows können Sie Ihren Befehl Prompcmd verwenden
cmd
, in Ubuntu können Sie Ihren Befehl eingeben ,terminal
indem Sie den folgenden Befehl eingeben:Wenn Sie dann Ihre Mongo-Shell öffnen, werden Sie feststellen, dass Sie Ihren Datenbanknamen überprüfen müssen, wenn Sie diesen Befehl ausführen:
quelle
Dieser Befehl funktioniert, wenn keine Sammlung angegeben ist.
Mongo-Shell nach Ausführung des Befehls
quelle
Ich habe so etwas versucht und es funktioniert tatsächlich:
quelle
Dies funktioniert bei mir bei db mit usrname und passwort
Datenbank ohne Benutzername Passwort bitte entfernen
-u my_user -p my_pass
Mein Beispiel json
quelle
Lösung:-
Beispiel:-
Legen Sie Ihre Datei im Administratorordner ab: -
Führen Sie diesen Befehl auf Ihrem Teminal aus: -
Ausgabe:-
Für mehr Link
quelle
Wenn Sie versuchen, diese Testsammlung zu exportieren:
mit mongoexport (das erste Datum, mit
Date(...)
dem erstellt wurde, und das zweite, mit dem erstellt wurdenew Date(...)
(wenn die VerwendungISODate(...)
mit der in der zweiten Zeile identisch ist)) sieht die Ausgabe von mongoexport folgendermaßen aus:Sie sollten also dieselbe Notation verwenden, da striktes JSON keinen Typ hat
Date( <date> )
.Auch Ihr JSON ist ungültig: Alle Feldnamen müssen in doppelte Anführungszeichen gesetzt werden, aber mongoimport funktioniert ohne sie einwandfrei.
Weitere Informationen finden Sie in der Mongodb- Dokumentation und hier .
quelle
sizeT:{data: "1949..."}}
Ein bisschen zu spät für eine wahrscheinliche Antwort, könnte neuen Leuten helfen. Falls Sie mehrere Datenbankinstanzen haben:
Angenommen, Anmeldeinformationen werden benötigt, andernfalls entfernen Sie diese Option.
quelle
mongoimport --jsonArray --db Datenbankname - Sammlung collectionName - Datei FilePath
Beispiel mongoimport --jsonArray --db learnmongo - Sammlung Personen - Datei C: \ Personen.json
quelle
Die Anzahl der Antworten wurde angegeben, obwohl ich meinen Befehl erteilen möchte. Ich habe es oft getan. Es kann jemandem helfen.
quelle