Mongoimport du fichier json

J’ai un fichier json composé d’environ 2000 enregistrements. Chaque enregistrement correspondant à un document de la firebase database 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 les seuls sauts de ligne sont à la fin de chaque enregistrement. Par conséquent, chaque ligne du document commence par “{jobID:” … J’essaie de les importer dans une firebase database 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 ssortingng 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 ssortingng 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?

J’ai pu corriger l’erreur en utilisant la requête suivante:

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

J’espère que cela est utile à quelqu’un.

essaye ça,

 mongoimport --db dbName --collection collectionName  

Exemple,

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

Le problème est dû à votre format de date.

J'ai utilisé le même JSON avec la date modifiée ci-dessous et cela a fonctionné

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

J'espère que cela t'aides

console:

 mongoimport -d dbName -c collectionName dataFile.js 

En utilisant mongoimport, vous pouvez obtenir le même résultat

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

où,

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

--drop est drop la collection si elle existe déjà.

J’ai utilisé la commande ci-dessous pour l’exportation DB

 mongodump --db database_name --collection collection_name 

et ci-dessous commande a travaillé pour moi pour importer DB

 mongorestore --db database_name path_to_bson_file 

Votre syntaxe apparaît complètement correcte dans:

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

Assurez-vous que vous êtes dans le bon dossier ou fournissez le chemin complet.

Cette commande fonctionne là où aucune collection n’est spécifiée.

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

Mongo shell après exécution de la commande

 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 

Si vous essayez d’exporter cette collection de tests:

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

avec mongoexport (la première date créée avec Date(...) et la seconde créée avec la new Date(...) (si utiliser ISODate(...) sera la même que dans la deuxième ligne)) alors sortie mongoexport sera comme ceci:

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

Vous devez donc utiliser la même notation, car JSON ssortingct n’a pas le type Date( ) .

De plus, votre JSON n’est pas valide: tous les champs nom doivent être placés entre guillemets, mais mongoimport fonctionne correctement sans eux.

Vous pouvez trouver des informations supplémentaires dans la documentation de mongodb et ici .

cela devrait fonctionner à l’intérieur du mongoshell

 mongoimport -d databaseName -c collectionName --drop fileName.json 

Si vous n’avez pas lancé le shell dans le répertoire requirejs, vous devez spécifier le fichier avec son chemin.