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 est sur une seule ligne dans le 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 en utilisant 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?
json
mongodb
import
mongoimport
ambre4478
la source
la source
--jsonArray
étant le ticket, oui?mongoimport -d <database> -c <collection> --jsonArray -f <filename>.json
.mongoimport --db dbName --collection collectionName --file fileName.json --jsonArray -u ser -p password
authenticationDatabase
comme mentionné dans la réponse stackoverflow.com/a/58067928/6791222 .essaye ça,
Exemple,
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é
J'espère que cela t'aides
la source
""
autour du.json
, s'il contient le nom du dossier contient des espaces. Répondu par Abhi ci-dessous Par exemple, cela ne fonctionnera pas, vous devez ajouter""
à l'emplacement du fichier json 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
En utilisant mongoimport, vous pouvez obtenir la même chose
où,
--drop
est de supprimer la collection si elle existe déjà.la source
console:
la source
J'ai utilisé la commande ci-dessous pour exporter la base de données
et ci-dessous la commande a fonctionné pour moi pour importer DB
la source
Votre syntaxe semble tout à fait correcte dans:
Assurez-vous que vous vous trouvez dans le bon dossier ou indiquez le chemin complet.
la source
Exécutez la commande d'importation dans un autre terminal. (pas à l'intérieur de la coque mongo.)
la source
Dans Windows, vous pouvez utiliser votre Command Prompcmd
cmd
, dans Ubuntu, vous pouvez utiliser votreterminal
en tapant la commande suivante:puis lorsque vous ouvrez votre shell mongo, vous trouverez pour vérifier votre nom_basededonnées lors de l'exécution de cette commande:
la source
Cette commande fonctionne lorsqu'aucune collection n'est spécifiée.
Mongo shell après avoir exécuté la commande
la source
J'ai essayé quelque chose comme ça et ça marche vraiment:
la source
Cela fonctionne avec moi lorsque db avec nom d'utilisateur et mot de passe
db sans nom d'utilisateur mot de passe veuillez supprimer
-u my_user -p my_pass
Mon échantillon json
la source
Solution:-
Exemple:-
Placez votre fichier dans le dossier admin: -
Exécutez cette commande sur votre teminal: -
Production:-
Pour plus de lien
la source
mongoimport --jsonArray --db dbname - collection collectionName - fichier FilePath
exemple mongoimport --jsonArray --db learnmongo --collection persons --file C: \ persons.json
la source
Si vous essayez d'exporter cette collection de test:
avec mongoexport (la première date créée avec
Date(...)
et la seconde créée avecnew Date(...)
(si l'utilisationISODate(...)
sera la même que dans la deuxième ligne)) donc la sortie de mongoexport ressemblera à ceci:Vous devriez donc utiliser la même notation, car le JSON strict n'a pas de type
Date( <date> )
.De plus, votre JSON n'est pas valide: le nom de tous les champs doit être entre guillemets, mais mongoimport fonctionne bien sans eux.
Vous pouvez trouver des informations supplémentaires dans la documentation de mongodb et ici .
la source
sizeT:{data: "1949..."}}
Un peu tard pour la réponse probable, pourrait aider de nouvelles personnes. Si vous avez plusieurs instances de base de données:
En supposant que les informations d'identification sont nécessaires, sinon supprimez cette option.
la source
Le nombre de réponses a été donné même si je voudrais donner mon ordre. J'avais l'habitude de le faire fréquemment. Cela peut aider quelqu'un.
la source