Mongoimport de fichier json
J'ai un fichier json composé d'environ 2000 dossiers. Chaque dossier correspond à un document dans la base de données mongo est formaté comme suit:
{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"}},
Chaque enregistrement est sur une seule ligne dans le fichier JSON, et le seul de sauts de ligne à la fin de chaque enregistrement. Par conséquent, chaque ligne dans le document commence par "{jobID:"... je suis en train de les importer dans une base de données mongo à l'aide de la commande suivante:
mongoimport --db dbName --collection collectionName --file fileName.json
Cependant, j'obtiens l'erreur suivante:
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
Je ne sais pas quel est le problème. Quelqu'un peut-il recommander une solution?
Vous devez vous connecter pour publier un commentaire.
J'ai été en mesure de corriger l'erreur à l'aide de la requête suivante:
Espérons que cela est utile à quelqu'un.
--jsonArray
être le billet, oui?mongoimport -d <database> -c <collection> --jsonArray -f <filename>.json
.essayer cela,
Exemple,
Question est à cause de vous format de date.
J'ai utilisé de la même JSON avec la date de modification ci-dessous et il a travaillé
espère que cette aide
""
autour de la.json
, si c'est de contenir le nom de dossier avec des espaces. Répondu par Abhi-dessous Pour E. g. Cela ne fonctionne pas, besoin d'ajouter""
pour le json emplacement du fichier pour l'importer.D:\>mongoimport --db testimport --collection small_zip < D:\Dev\test test\small_zips.json The system cannot find the file specified.
Cela fonctionneD:\>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
console:
À l'aide de mongoimport vous pouvez vous permettre d'atteindre le même
où,
--drop
, c'est de déposer la collection si il existe déjà.Votre syntaxe semble tout à fait correct en:
Assurez-vous que vous êtes dans le bon dossier ou de fournir le chemin d'accès complet.
J'ai utilisé la commande ci-dessous pour l'exportation DB
et au-dessous de commande a fonctionné pour moi d'importation DB
Exécutez la commande importer dans un autre terminal. (pas à l'intérieur de mongo coquille).
Cette commande fonctionne, où aucune collection n'est spécifié .
Shell Mongo après l'exécution de la commande
Dans windows, vous pouvez utiliser votre Commande Prompcmd
cmd
, dans Ubuntu, vous pouvez utiliser votreterminal
en tapant la commande suivante:puis, quand vous ouvrez votre shell mongo, vous trouverez de vérifier votre database_name lors de l'exécution de cette commande:
Si vous essayez d'exporter ce test collection:
avec mongoexport (la première date de création avec
Date(...)
et la seconde créé avecnew Date(...)
(siISODate(...)
sera la même que dans la deuxième ligne)), de sorte mongoexport de sortie seront ressemble à ceci:Vous devez donc utiliser la même notation, parce que le strict JSON n'a pas de type
Date( <date> )
.Également votre JSON n'est pas valide: tous les champs de nom doivent être entourées de guillemets, mais mongoimport fonctionne très bien sans eux.
Vous pouvez trouver des informations supplémentaires dans mongodb la documentation et ici.
sizeT:{data: "1949..."}}
J'ai essayé quelque chose comme ça, et ça marche vraiment:
cela devrait fonctionner à l'intérieur de la mongoshell
si vous n'avez pas à lancer le shell dans le répertoire requis, vous devez spécifier le fichier avec son chemin d'accès.