Blog ENI : Toute la veille numérique !
💥 Un livre PAPIER acheté
= La version EN LIGNE offerte pendant 1 an !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. MongoDB
  3. Importer, exporter et restaurer des données
Extrait - MongoDB Comprendre et optimiser l'exploitation de vos données (avec exercices et corrigés) (2e édition)
Extraits du livre
MongoDB Comprendre et optimiser l'exploitation de vos données (avec exercices et corrigés) (2e édition) Revenir à la page d'achat du livre

Importer, exporter et restaurer des données

Importer

1. L’utilitaire mongoimport

Le programme mongoimport vous sera d’une grande utilité pour importer des données contenues dans des fichiers au format JSON, CSV ou TSV (dans les premiers, les champs sont séparés par des virgules tandis que dans le dernier ils sont séparés par des tabulations). Comme mongofiles, il ne s’utilise pas depuis mongosh, mais depuis un terminal. Nous effectuerons les commandes à venir avec l’utilisateur mongosensei, créé il y a plusieurs chapitres de cela. Pour qu’un utilisateur puisse effectuer des opérations d’importation, il doit au moins posséder le rôle readWrite sur la base de données qu’il cible, ce qui est le cas de mongosensei.

Cet utilitaire ne prend en charge que les documents dont le codage est UTF-8 et toute tentative d’importer des données depuis un fichier comportant un autre codage se soldera par un échec. Voici par exemple l’erreur levée par une tentative d’importation depuis un fichier codé en UTF-16 :

connected to: mongodb://localhost/ 
Failed: error processing document #1: invalid character 'ÿ' 
looking for beginning of value 
imported 0 documents 

2. Importer des données depuis un fichier JSON

JSON est le format utilisé par défaut par mongoimport. Pour réaliser notre premier import, nous écrivons un fichier spectacle.json qui contient trois documents, chacun occupant une ligne :

{"_id": 1, "titre": "Platonov", "auteur": "Tchekov", "lieu": "Théâtre 
Golovine",  
"date": ISODate("2024-07-25T22:00:00Z"), "prix": 20} 
{"_id": 2, "titre": "Hamlet", "auteur": "Shakespeare", "lieu": 
"Théâtre du  
Forum", "date": ISODate("2024-07-24T20:00:00Z"), "prix": 17} 
{"_id": 3, "titre": "L'Avare", "auteur": "Molière", "lieu": 
"Théâtre des Doms",  
"date": ISODate("2024-07-23T20:00:00Z"), "prix": 15} 

Nous utiliserons la commande d’importation avec les paramètres d’authentification...

Exporter

1. L’utilitaire mongodump

L’exécutable mongodump permet de créer un export de vos bases de données au format binaire. Écrivons la commande qui permettra d’exporter le contenu de la base de données test, qui a servi à la majeure partie de nos exemples, dans le répertoire/tmp (attention, si des fichiers d’export s’y trouvent déjà, ils seront écrasés !) :

mongodump -u "mongosensei" --authenticationDatabase "admin" \ 
--db test -o=/tmp 

Voici une partie de l’affichage que nous obtenons :

writing test.personnes to /tmp/test/personnes.bson 
writing test.personnel to /tmp/test/personnel.bson 
writing test.livres to /tmp/test/livres.bson 
done dumping test.personnes (9 documents) 
done dumping test.personnel (9 documents) 
done dumping test.livres (8 documents) 

Si nous prenons la peine de regarder ce qui se trouve dans le répertoire /tmp, nous constatons que mongodump a créé un sous-répertoire portant le nom de la base de données ciblée. Pour chaque collection, nous trouvons deux fichiers : l’un d’entre eux porte l’extension .json et l’autre .bson. Si nous consultons le contenu du fichier qui contient les métadonnées au format JSON, nous pouvons y voir les index que nous avons posés :

cat personnes.metadata.json 
{"options":{},"indexes":[{"v":2,"key": 
"_id":1},"name":"_id_","ns":"test.personnes"},{"v":2,"key": 
{"prenom":1.0},"name":"prenom_1","ns":"test.personnes",
"background":true}, 
{"v":2,"key": 
{"nom":1.0,"age":1.0},"name":"idx_nom_age","ns":"test.personnes"}], ...

Restaurer

Le programme mongorestore charge des données contenues dans des fichiers binaires exportés à l’aide de mongodump ou bien à partir de l’entrée standard.

Lorsque nous avons utilisé mongodump, l’opération a créé un répertoire portant le nom de la base de données dans le répertoire temporaire /tmp. Supposons qu’entre temps nous ayons supprimé la base de données test qui sert de support à nos exemples depuis le début de ce livre... Pas de panique ! Grâce à mongorestore nous allons pouvoir récupérer les données telles qu’elles étaient. Cet exécutable s’invoque de la manière suivante :

mongorestore < options > < répertoire de fichiers BSON ou 
fichier BSON unique > 

Pour l’utiliser de manière très simple, nous allons lui indiquer le répertoire dans lequel mongodump a généré des fichiers BSON et évidemment, le nom de la base de données dans laquelle il doit réaliser la restauration des données (option -d) :

mongorestore -u "mongosensei" --authenticationDatabase 
"admin" /tmp/test -d test 

Voici une partie de ce qui s’affiche à l’écran durant l’exécution de ce processus...

building a list of collections to restore...