MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Importer un fichier CSV dans MongoDB avec mongoimport

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.