Les outils de base de données MongoDB incluent un utilitaire appelé mongoexport
qui vous permet d'exporter des données MongoDB vers un fichier CSV ou JSON.
Cet article vous montre comment utiliser mongoexport
pour exporter une collection MongoDB vers un fichier CSV.
Syntaxe
La syntaxe de mongoexport
va comme ceci :
mongoexport --collection=<coll> <options> <connection-string>
Vous devez exécuter mongoexport
commandes à partir de la ligne de commande de votre système (par exemple, un nouveau terminal ou une fenêtre d'invite de commande).
N'exécutez pas mongoexport
commandes du mongo
coquille.
Exporter une collection
L'exemple de code suivant exporte une collection depuis MongoDB :
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --out=data/pets.csv
Ceci exporte une collection appelée pets
du PetHotel
base de données dans un fichier appelé pets.csv
dans les data/
dossier.
Si le dossier n'existe pas, il est créé. Idem avec le fichier. Soit dit en passant, cela suppose qu'il n'y a pas de problèmes d'autorisation avec l'écriture d'un fichier à l'emplacement spécifié.
Dans cet exemple, je n'ai spécifié aucun hôte, port, authentification, etc., il exporte donc la collection de l'instance MongoDB exécutée sur le numéro de port localhost par défaut 27017
.
Vous trouverez ci-dessous une explication des paramètres que nous avons fournis ici.
Paramètre | Description |
---|---|
--db ou alors -d | Spécifie la base de données qui contient la collection que nous voulons exporter. Dans ce cas, la base de données s'appelle PetHotel . Ce paramètre peut également être passé en utilisant -d (au lieu de --db ). |
--collection ou alors -c | Spécifie la collection que nous voulons exporter. Dans ce cas, la collection s'appelle pets . Ce paramètre peut également être passé sous la forme -c (au lieu de --collection ). |
--type | Spécifie le type de fichier exporté. Dans ce cas, nous spécifions csv pour l'exporter vers un fichier CSV. |
--fields | Spécifie les champs que nous voulons exporter. Nous avons la possibilité d'exporter tous les champs de la collection, ou seulement certains. Vous devez énumérer chacun ici, séparé par une virgule. Lors de l'exportation au format CSV, la spécification des noms de champs est obligatoire. Vous pouvez le faire via les --fields paramètre ou le --fieldFile paramètre (plus à ce sujet plus tard). |
--out | Spécifie le nom du fichier exporté et où il sera situé. Si vous ne spécifiez pas de nom de fichier, mongoexport écrit les données sur la sortie standard (stdout ). |
Vérifier le fichier exporté
Vérifions que l'opération d'exportation a fonctionné comme prévu.
Commençons par vérifier la collection d'origine.
use PetHotel
db.pets.find()
Résultat :
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 } { "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 } { "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 } { "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 } { "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }
Nous pouvons donc voir qu'il y a 7 animaux de compagnie, tous avec les mêmes champs que nous avons spécifiés dans notre opération d'exportation.
Ouvrons maintenant le fichier exporté pets.csv
pour voir ce qu'il y a dedans :
_id,name,type,weight 1,Wag,Dog,20 2,Bark,Dog,10 3,Meow,Cat,7 4,Scratch,Cat,8 5,Bruce,Bat,3 6,Fetch,Dog,17 7,Jake,Dog,30
OK, donc toutes les données sont dans le fichier exporté comme prévu.
Supprimer les en-têtes de colonne
Vous remarquerez que le fichier exporté dans l'exemple précédent incluait les en-têtes de colonne.
Vous avez également la possibilité d'exporter le fichier sans en-têtes de colonne. Pour ce faire, utilisez le --noHeaderLine
paramètre.
Exemple :
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --noHeaderLine --out=data/pets.csv
Désormais, lorsque j'ouvre le fichier exporté, il n'y a plus d'en-tête de colonne :
1,Wag,Dog,20 2,Bark,Dog,10 3,Meow,Cat,7 4,Scratch,Cat,8 5,Bruce,Bat,3 6,Fetch,Dog,17 7,Jake,Dog,30
Utiliser un fichier pour les noms de champs
Vous pouvez remplacer le --field
paramètre avec le --fieldFile
paramètre pour spécifier le nom d'un fichier qui contient les noms de champs que vous souhaitez exporter.
mongoexport --db=PetHotel --collection=pets --type=csv --fieldFile=data/pets_fields.txt --out=data/pets.csv
Le fichier qui contient les champs doit avoir les champs listés, un par ligne.
Voici ce que le pets_fields.txt
fichier ressemblait à cet exemple :
_id name type weight
Ainsi, le contenu du fichier exporté ressemblait à ceci :
_id,name,type,weight 1,Wag,Dog,20 2,Bark,Dog,10 3,Meow,Cat,7 4,Scratch,Cat,8 5,Bruce,Bat,3 6,Fetch,Dog,17 7,Jake,Dog,30
Modification de l'ordre des colonnes
Vous pouvez changer l'ordre des champs à exporter. Ils ne doivent pas nécessairement être dans le même ordre que le document sous-jacent.
Par exemple, ce code :
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,weight,type,name --out=data/pets.csv
Résultats dans le fichier CSV suivant :
_id,weight,type,name 1,20,Dog,Wag 2,10,Dog,Bark 3,7,Cat,Meow 4,8,Cat,Scratch 5,3,Bat,Bruce 6,17,Dog,Fetch 7,30,Dog,Jake
Et les suivants :
mongoexport --db=PetHotel --collection=pets --type=csv --fields=type,name,weight,_id --out=data/pets.csv
Résultats dans ceci :
type,name,weight,_id Dog,Wag,20,1 Dog,Bark,10,2 Cat,Meow,7,3 Cat,Scratch,8,4 Bat,Bruce,3,5 Dog,Fetch,17,6 Dog,Jake,30,7
Contrôle d'accès/Authentification
Si vous n'utilisez pas localhost, vous pouvez utiliser le --host
paramètre pour spécifier l'hôte, et --port
pour spécifier le port. Vous pouvez également utiliser le --username
paramètre pour spécifier le nom d'utilisateur et --password
à pour le mot de passe. Si vous omettez le paramètre de mot de passe, vous serez invité à le saisir. Il y a aussi une --authenticationDatabase
paramètre permettant de spécifier la base d'authentification dans laquelle l'utilisateur a été créé.
Exemple :
mongoexport --host=myhost.example.com --port=37017 --username=homer --authenticationDatabase=admin --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --out=data/pets.csv
Vérifiez mongoexport
mongoexport
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/mongoexport
installé, essayez d'exécuter la commande suivante dans votre terminal ou invite de commande pour vérifier :
mongoexport --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 les commandes ?
N'oubliez pas, vous devez exécuter mongoexport
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.