Lorsque vous utilisez MongoDB, vous pouvez utiliser mongoimport
pour importer des documents dans une collection. mongoimport
est un utilitaire de ligne de commande qui importe le contenu d'un fichier JSON étendu, CSV ou TSV. Le fichier d'import a peut-être été créé par mongoexport
ou un autre utilitaire d'exportation.
Cet article présente des exemples d'importation d'un fichier CSV dans MongoDB.
Exemple
Supposons que nous ayons le fichier CSV suivant appelé pets.csv
:
_id,name,type 1,"Wag","Dog" 2,"Bark","Dog" 3,"Meow","Cat"
La commande suivante importe le fichier CSV dans MongoDB :
mongoimport --db=PetHotel --type=csv --headerline --file=pets.csv
Dans ce cas, je n'ai pas spécifié de collection dans laquelle l'importer, donc il a créé une collection avec le même nom de fichier (pets
).
Vérifiez les résultats
Jetons un coup d'œil à la collection.
db.pets.find()
Résultat :
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" }
Nous pouvons voir que les documents ont été importés comme prévu.
Fichiers CSV sans en-têtes de colonne
Dans l'exemple précédent, nous avons utilisé le --headerline
paramètre pour spécifier que la première ligne doit être utilisée pour les noms de champ.
Si votre fichier CSV ne contient pas de ligne d'en-tête, vous devrez utiliser soit le --fields
paramètre ou le --fieldFile
paramètre pour spécifier les noms de champs.
Alors, imaginez que notre fichier CSV n'ait pas la ligne de colonne et ressemble à ceci :
1,"Wag","Dog" 2,"Bark","Dog" 3,"Meow","Cat"
Nous pourrions alors utiliser la commande suivante pour importer le fichier :
mongoimport --db=PetHotel --type=csv --fields=_id,name,type --file=pets.csv
Cela a le même résultat que l'exemple précédent.
Spécifiez le nom de la collection
Vous pouvez utiliser le --collection
(ou -c
) paramètre pour spécifier une collection dans laquelle importer le fichier.
Voici un exemple d'utilisation de la --collection
paramètre pour importer le même fichier dans une autre collection :
mongoimport --db=PetHotel --collection=pets2 --type=csv --fields=_id,name,type --file=pets.csv
Si la collection n'existe pas déjà, elle sera créée. S'il existe déjà, le résultat de l'importation dépendra du mode que vous utilisez (nous en reparlerons plus tard).
Dans notre cas, voici à quoi ressemble la collection nouvellement créée :
db.pets2.find()
Résultat :
{ "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" } { "_id" : 1, "name" : "Wag", "type" : "Dog" }
Déposez la collection avant l'importation
Vous pouvez utiliser le --drop
pour supprimer toute collection existante portant le même nom que celle que vous essayez de créer/importer.
Imaginez que nous ayons un deuxième fichier, appelé pets2.csv
, avec le document suivant :
_id,name,type,weight 4,"Bubbles","Fish",3
Voici ce qui se passe si j'importe ce document dans pets2
collection en utilisant le --drop
choix :
mongoimport --db=PetHotel --collection=pets2 --type=csv --headerline --drop --file=pets2.csv
Sortie :
2021-01-03T15:05:40.281+1000 connected to: mongodb://localhost/ 2021-01-03T15:05:40.284+1000 dropping: PetHotel.pets2 2021-01-03T15:05:40.336+1000 1 document(s) imported successfully. 0 document(s) failed to import.
Cela nous indique que la collection a été supprimée et qu'un document a été importé.
Jetons un coup d'œil à la collection :
db.pets2.find()
Résultat :
{ "_id" : 4, "name" : "Bubbles", "type" : "Fish", "weight" : 3 }
Comme prévu, notre nouveau document est le seul de la collection.
Modes d'importation
Il existe différents modes d'importation que vous pouvez utiliser avec mongoimport
. Ces modes déterminent ce qui se passe s'il existe déjà des documents correspondants dans la collection dans laquelle vous essayez d'importer.
Les modes sont les suivants :
Mode | Description |
---|---|
insert | C'est le mode par défaut. Ce mode insère les documents du fichier d'importation. Si un document correspondant existe déjà dans la collection, une erreur se produit. Un document correspondant est celui qui a le même ID unique (comme un _id correspondant champ) en tant que document dans le fichier d'importation. |
upsert | Remplace les documents existants dans la base de données par des documents correspondants du fichier d'importation. Tous les autres documents sont insérés. |
merge | Fusionne les documents existants qui correspondent à un document dans le fichier d'importation avec le nouveau document. Tous les autres documents sont insérés. |
delete | Supprime les documents existants dans la base de données qui correspondent à un document dans le fichier d'importation. Tout document non correspondant n'a aucun effet. |
Voir Les modes d'importation de mongoimport
pour des exemples de chaque mode.
Vérifiez mongoimport
mongoimport
fait partie du package MongoDB Database Tools. Les outils de base de données MongoDB sont une suite d'utilitaires de ligne de commande permettant de travailler avec MongoDB.
Si vous n'êtes pas sûr d'avoir les outils de base de données MongoDB/mongoimport
installé, essayez d'exécuter la commande suivante dans votre terminal ou invite de commande pour vérifier :
mongoimport --version
Si vous l'avez, vous devriez voir les informations de version, etc. Si vous ne l'avez pas, vous pouvez utiliser les instructions d'installation sur le site Web de MongoDB pour l'installer sur votre système.
Où exécuter mongoimport
Commandes ?
Vous devez exécuter mongoimport
commandes à partir de la ligne de commande de votre système (par exemple, un nouveau terminal ou une fenêtre d'invite de commande).
Ne les exécutez pas depuis le mongo
coquille.