Comment importer et exporter une base de données MongoDB sur Ubuntu 20.04

L’auteur a choisi le COVID-19 Relief Fund pour recevoir un don dans le cadre du programme Write for DOnations.

Introduction

MongoDB est l’un des moteurs de base de données NoSQL les plus populaires. Il doit sa célébrité à son évolutivité, sa puissance, sa fiabilité et sa facilité d’utilisation. Dans cet article, nous allons vous montrer de quelle manière importer et exporter vos bases de données MongoDB.

Notez que par import et export, nous faisons référence aux opérations qui traitent des données sous un format lisible par l’homme, compatibles avec d’autres produits logiciels. En revanche, les opérations de sauvegarde et de restauration créent ou utilisent des données binaires spécifiques à MongoDB, qui préservent la cohérence et l’intégrité de vos données et également ses attributs MongoDB spécifiques. Par conséquent, lors de la migration, il est généralement recommandé d’utiliser la sauvegarde et la restauration dans la mesure où les systèmes source et cible sont compatibles.

La sauvegarde, la restauration et les tâches de migration ne sont pas traitées dans cet article. Pour plus d’informations à ce sujet, consultez Comment sauvegarder, restaurer et migrer une base de données MongoDB sur Ubuntu 20.04.

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin des éléments suivants :

Étape 1 — Importer des informations dans MongoDB

Pour apprendre à importer des informations dans MongoDB, nous allons utiliser un échantillon populaire de base de données MongoDB, les restaurants. Elle est au format .json et peut être téléchargée en utilisant wget de la manière suivante :

  • wget https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/primer-dataset.json

Une fois le téléchargement terminé, vous devriez obtenir un fichier nommé primer-dataset.json (de 12 Mo) dans le répertoire actuel. Importons les données de ce fichier dans une nouvelle base de données que nous appellerons newdb et dans une collection nommée restaurants.

Utilisez la commande mongoimport de la manière suivante :

  • sudo mongoimport --db newdb --collection restaurants --file primer-dataset.json

Le résultat ressemblera à ceci :

Output
2020-11-11T19:37:55.607+0000 connected to: mongodb://localhost/ 2020-11-11T19:37:57.841+0000 25359 document(s) imported successfully. 0 document(s) failed to import

Comme la commande ci-dessus l’indique, nous avons importé 25 359 documents. Étant donné que nous ne disposions pas d’une base de données appelée newdb, MongoDB l’a créée automatiquement.

Vérifions l’importation.

Connectez-vous à la base de données newdb nouvellement créée :

  • sudo mongo newdb

Vous êtes maintenant connecté à l’instance de base de données newdb. Notez que votre invite a changé et indique désormais que vous êtes connecté à la base de données.

Comptez les documents dans la collection de restaurants en utilisant la commande suivante :

  • db.restaurants.count()

Le résultat affichera 25359, qui correspond au nombre de documents importés. Pour procéder à une vérification plus approfondie, vous pouvez sélectionner le premier document dans la collection des restaurants de la manière suivante :

  • db.restaurants.findOne()

Le résultat ressemblera à ceci :

[secondary label Output]
{
    "_id" : ObjectId("5fac3d937f12c471b3f26733"),
    "address" : {
        "building" : "1007",
        "coord" : [
            -73.856077,
            40.848447
        ],
        "street" : "Morris Park Ave",
        "zipcode" : "10462"
    },
    "borough" : "Bronx",
    "cuisine" : "Bakery",
    "grades" : [
        {
            "date" : ISODate("2014-03-03T00:00:00Z"),
            "grade" : "A",
            "score" : 2
        },
...
    ],
    "name" : "Morris Park Bake Shop",
    "restaurant_id" : "30075445"
}

Une telle vérification détaillée pourrait révéler la présence de problèmes avec les documents comme avec leur contenu, leur encodage, etc. Le format json utilise l’encodage UTF-8 et vos exportations et importations devraient utiliser ce même encodage. Gardez cela à l’esprit lorsque vous modifiez des fichiers json manuellement. Dans le cas contraire, MongoDB gérera cela automatiquement à votre place.

Pour quitter l’invite MongoDB, tapez exit à l’apparition de l’invite :

  • exit

Vous serez renvoyé à l’invite de ligne de commande normale en tant que non-root user.

Étape 2 — Exporter des informations à partir de MongoDB

Comme nous l’avons précédemment mentionné, en exportant des informations MongoDB, vous pouvez obtenir un fichier de texte lisible par l’humain. Les informations sont exportées par défaut sous format json, mais vous pouvez les également exporter sous csv (valeur séparée par des virgules).

Pour exporter des informations de MongoDB, utilisez la commande mongoexport. Elle vous permet de procéder à une exportation très minutieuse afin que vous puissiez spécifier une base de données, une collection, un champ et même utiliser une requête pour l’exportation.

Par exemple, un mongoexport simple consisterait à exporter la collection de restaurants à partir de la base de données newdb que nous avons précédemment importée. Vous pouvez procéder à cette opération de la manière suivante :

  • sudo mongoexport --db newdb -c restaurants --out newdbexport.json

Dans la commande ci-dessus, nous utilisons –--db pour spécifier la base de données, -c pour la collection et --out pour le fichier dans lequel les données seront enregistrées.

La sortie d’un mongoexport réussie devrait ressembler à ceci :

Output
2020-11-11T19:39:57.595+0000 connected to: mongodb://localhost/ 2020-11-11T19:39:58.619+0000 [###############.........] newdb.restaurants 16000/25359 (63.1%) 2020-11-11T19:39:58.871+0000 [########################] newdb.restaurants 25359/25359 (100.0%) 2020-11-11T19:39:58.871+0000 exported 25359 records

La sortie ci-dessus indique que 25 359 documents ont été importés, le même nombre que celui des documents importés.

Dans certains cas, vous aurez éventuellement besoin d’exporter uniquement une partie de votre collection. En considérant la structure et le contenu du fichier json des restaurants, exportons tous les restaurants qui satisfont aux critères suivants : localisés dans le quartier du Bronx et proposant de la cuisine chinoise. Pour obtenir ces informations directement, tout en étant connecté à MongoDB, connectez-vous à nouveau à la base de données :

  • sudo mongo newdb

Ensuite, utilisez la requête suivante :

  • db.restaurants.find( { "borough": "Bronx", "cuisine": "Chinese" } )

Les résultats s’affichent sur le terminal :

Output
  • 2020-12-03T01:35:25.366+0000 connected to: mongodb://localhost/
  • 2020-12-03T01:35:25.410+0000 exported 323 records

Pour quitter l’invite MongoDB, tapez exit :

  • exit

Si vous souhaitez exporter les données à partir d’une ligne de commande sudo, plutôt que pendant que vous êtes connecté à la base de données, intégrez la requête précédente dans la commande mongoexport, en la spécifiant pour l’argument -q comme ceci :

  • sudo mongoexport --db newdb -c restaurants -q "{"borough": "Bronx", "cuisine": "Chinese"}" --out Bronx_Chinese_retaurants.json

Notez que nous omettons les guillemets en utilisant backslash () dans la requête. De la même manière, vous devez omettre tout autre caractère spécial dans la requête.

Si l’exportation est probante, le résultat devrait ressembler à ce qui suit :

Output
2020-11-11T19:49:21.727+0000 connected to: mongodb://localhost/ 2020-11-11T19:49:21.765+0000 exported 323 records

Ce qui précède indique que 323 enregistrements ont été exportés. Vous pouvez les trouver dans le fichier Bronx_Chinese_retaurants.json que nous avons spécifié.

Utilisez cat et less pour analyser les données :

  • cat Bronx_Chinese_retaurants.json | less

Utilisez SPACE pour paginer à travers les données :

Output
  • date":{"$date":"2015-01-14T00:00:00Z"},"grade":"Z","score":36}],"na{"_id":{"$oid":"5fc8402d141f5e54f9054f8d"},"address":{"building":"1236","coord":[-73.8893654,40.81376179999999],"street":"238 Spofford Ave","zipcode":"10474"},"borough":"Bronx","cuisine":"Chinese","grades":[{"date":{"$date":"2013-12-30T00:00:00Z"},"grade":"A","score":8},{"date":{"$date":"2013-01-08T00:00:00Z"},"grade":"A","score":10},{"date":{"$date":"2012-06-12T00:00:00Z"},"grade":"B","score":15}],
  • . . .

Appuyez sur q pour fermer. Vous pouvez maintenant importer et exporter une base de données MongoDB.

Conclusion

Cet article vous a présenté les éléments essentiels de l’importation et l’exportation d’informations vers et depuis une base de données MongoDB. Vous pouvez approfondir vos connaissances en consultant Comment sauvegarder, restaurer et migrer une base de données MongoDB sur Ubuntu 20.04.

Vous pouvez également envisager d’utiliser une réplication. La réplication vous permet de continuer à exécuter votre service MongoDB sans interruption à partir d’un serveur MongoDB esclave alors que vous restaurez le maître à partir d’une défaillance. Une partie de la réplication est le operations log (oplog). Il enregistre toutes les opérations qui modifient vos données. Vous pouvez utiliser ce journal, tout comme vous utiliseriez le journal binaire dans MySQL, pour restaurer vos données une fois la dernière sauvegarde effectuée. N’oubliez pas que, étant donné que les sauvegardes se font généralement pendant la nuit, si vous décidez de restaurer une sauvegarde le soir, vous manquerez toutes les mises à jour qui auront lieu depuis la dernière sauvegarde.

Source: DigitalOcean

Leave a Reply

Your email address will not be published.


*