J'ai un fichier JSON composé d'environ 2000 enregistrements. Chaque enregistrement qui correspondra à un document de 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 figure sur une seule ligne du fichier JSON et les seuls sauts de ligne se trouvent à la fin de chaque enregistrement. Par conséquent, chaque ligne du document commence par "{jobID:" ... J'essaie 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?
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 <fileName.json
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 supprimer la collection s'il existe déjà.
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 indiquez le chemin complet.
J'ai utilisé la commande ci-dessous pour l'exportation de la base de données
mongodump --db database_name --collection collection_name
et ci-dessous la commande a fonctionné pour moi pour importer DB
mongorestore --db database_name path_to_bson_file
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 l'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
Exécutez la commande d'importation dans un autre terminal. (pas à l'intérieur mongo Shell.)
mongoimport --db test --collection user --drop --file ~/downloads/user.json
Cela fonctionne avec moi quand db avec nom d'utilisateur et mot de passe
mongoimport --db YOUR_DB --collection MyCollection --file /your_path/my_json_file.json -u my_user -p my_pass
db sans nom d'utilisateur mot de passe, veuillez supprimer -u my_user -p my_pass
Mon échantillon json
{
"_id" : ObjectId("5d11c815eb946a412ecd677d"),
"empid" : NumberInt(1),
"name" : "Rahul"
}
{
"_id" : ObjectId("5d11c815eb946a412ecd677e"),
"empid" : NumberInt(2),
"name" : "Rahul"
}
Dans Windows, vous pouvez utiliser votre commande Prompcmd cmd
, dans Ubuntu, vous pouvez utiliser votre terminal
en tapant la commande suivante:
mongoimport -d your_database_name -c your_collection_name /path_to_json_file/json_file_name.json
ensuite, lorsque vous ouvrirez votre shell mongo, vous pourrez vérifier votre nom de base de données lors de l'exécution de cette commande:
show databases
J'ai essayé quelque chose comme ça et ça marche vraiment:
mongoimport --db dbName --file D:\KKK\NNN\100YWeatherSmall.data.json
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 new Date(...)
(si use ISODate(...)
sera identique à celui de la deuxième ligne)), la sortie de mongoexport sera alors la suivante:
{ "_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 strict n’a pas le type Date( <date> )
.
De plus, votre JSON n'est pas valide: tous les champs de nom doivent être placés entre guillemets, mais mongoimport fonctionne très bien sans eux.
Vous pouvez trouver des informations supplémentaires dans mongodb documentation et ici .
Solution: -
mongoimport --db databaseName --collection tableName --file filepath.json
Exemple: -
Placez votre fichier dans le dossier admin: -
C:\Users\admin\tourdb\places.json
Exécutez cette commande sur votre terminal:
mongoimport --db tourdb --collection places --file ~/tourdb/places.json
Sortie: -
admin@admin-PC 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
Pour plus lien