MongoDB Academy · Leçon

mongoimport : charger des fichiers JSON et CSV

Les apprenants importeront des fichiers de données JSON et CSV dans une collection avec mongoimport, en utilisant différents indicateurs de mode.

Leçon 1 sur 413 étapes

mongoimport : charger des fichiers JSON et CSV est une leçon MongoDB Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage MongoDB Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours MongoDB Academy comprend 4 leçons au total.

Qu’est-ce que mongoimport ?

mongoimport est un outil en ligne de commande fourni avec le paquet MongoDB Database Tools. Il charge directement des données provenant de fichiers JSON, JSONL (JSON Lines / JSON délimité par des retours à la ligne) et CSV dans une collection MongoDB. Il s’agit de la méthode standard pour initialiser une collection avec des données de départ, migrer depuis une autre base de données ou charger en masse une exportation provenant d’un système tiers.

Importation JSON de base

La commande mongoimport la plus simple indique la chaîne de connexion, la base de données, la collection et le fichier d’entrée. Par défaut, elle attend un tableau JSON d’objets ([{...},{...}]). L’option --jsonArray est obligatoire lors de l’importation d’un fichier contenant un tableau JSON ; omettez-la pour le format JSONL (un document par ligne).

# Import a JSON array file into the 'products' collection
mongoimport \
  --uri 'mongodb://localhost:27017/myapp' \
  --collection products \
  --file products.json \
  --jsonArray

# Output:
# 2024-01-01T12:00:00.000+0000  connected to: mongodb://localhost:27017
# 2024-01-01T12:00:00.100+0000  100 document(s) imported successfully

Format JSONL : un document par ligne

JSONL (également appelé ndjson) stocke un document JSON par ligne, sans enveloppe de tableau externe. Ce format est privilégié pour les fichiers volumineux, car il peut être traité en flux, ligne par ligne, sans charger tout le fichier en mémoire. mongoimport gère le format JSONL par défaut lorsque vous omettez --jsonArray.

# products.ndjson — one document per line:
# {"name":"Widget","price":9.99}
# {"name":"Gadget","price":19.99}
# {"name":"Donut","price":1.99}

# Import JSONL file (no --jsonArray flag)
mongoimport \
  --uri 'mongodb://localhost:27017/myapp' \
  --collection products \
  --file products.ndjson

Importer des fichiers CSV

Pour les importations CSV, indiquez --type csv et fournissez les en-têtes de colonnes. Si le fichier CSV comporte une ligne d’en-tête, utilisez --headerline pour lire les noms de colonnes sur la première ligne. Si le fichier n’a pas de ligne d’en-tête, indiquez les noms de colonnes avec --fields. Par défaut, toutes les valeurs CSV sont importées sous forme de chaînes de caractères ; utilisez --columnsHaveTypes pour déclarer leurs types.

# CSV with header row:
# name,price,category
# Widget,9.99,tools
# Gadget,19.99,electronics

mongoimport \
  --uri 'mongodb://localhost:27017/myapp' \
  --collection products \
  --type csv \
  --headerline \
  --file products.csv

Indiquer les noms de champs pour un CSV sans en-tête

Lorsque le fichier CSV ne comporte pas de ligne d’en-tête, indiquez les noms de champs avec l’option --fields. L’ordre des noms dans --fields doit correspondre à l’ordre des colonnes dans le CSV. Cette approche est courante lors de l’importation d’exportations provenant d’anciens systèmes qui n’incluent pas d’en-têtes.

# CSV without header:
# Widget,9.99,tools
# Gadget,19.99,electronics

mongoimport \
  --uri 'mongodb://localhost:27017/myapp' \
  --collection products \
  --type csv \
  --fields 'name,price,category' \
  --file products_no_header.csv

Modes d’importation : insert, upsert, merge

mongoimport prend en charge trois modes d’écriture contrôlés par --mode :

  • insert (par défaut) : insérer tous les documents ; échouer en cas de doublon de _id
  • upsert : insérer si le document n’existe pas, le remplacer s’il existe (en faisant la correspondance sur --upsertFields)
  • merge : insérer si le document n’existe pas, fusionner les champs s’il existe, sans remplacer le document entier
Utilisez upsert pour effectuer des réimportations idempotentes.

# Upsert mode — safe to run multiple times
mongoimport \
  --uri 'mongodb://localhost:27017/myapp' \
  --collection products \
  --file products.json \
  --jsonArray \
  --mode upsert \
  --upsertFields 'sku'  # match on the 'sku' field

L’option --drop : remplacer le contenu d’une collection

L’option --drop supprime la collection cible avant l’importation. Vous repartez ainsi d’une base vierge à chaque importation, ce qui est utile pour initialiser un environnement de développement dans lequel vous souhaitez rétablir les données dans un état connu. N’utilisez pas --drop en production si la collection contient des données qui ne doivent pas être supprimées.

# Drop the products collection and reimport from scratch
mongoimport \
  --uri 'mongodb://localhost:27017/myapp' \
  --collection products \
  --file products.json \
  --jsonArray \
  --drop  # drops collection before importing

Importer dans MongoDB Atlas

Pour importer des données dans un cluster MongoDB Atlas, utilisez la chaîne de connexion Atlas complète (au format SRV) avec l’option --uri. Atlas exige TLS — l’URI SRV l’active automatiquement. Vous aurez besoin de votre nom d’utilisateur et de votre mot de passe Atlas dans l’URI ou transmis via des variables d’environnement, afin d’éviter de stocker vos identifiants dans l’historique du shell.

# Import into Atlas cluster
MONGO_URI='mongodb+srv://username:password@cluster0.abc.mongodb.net/myapp'

mongoimport \
  --uri "$MONGO_URI" \
  --collection products \
  --file products.json \
  --jsonArray

Gérer les erreurs d’importation

Par défaut, mongoimport poursuit l’importation malgré les erreurs non fatales (comme les violations de clé en double sur certains documents) et consigne à la fin le nombre de documents en échec. Utilisez --stopOnError pour interrompre l’importation à la première erreur — cette option est utile lorsque vous avez besoin d’une importation entièrement réussie ou entièrement annulée. Dans vos scripts, vérifiez le code de sortie et le nombre d’erreurs afin de détecter les importations partielles.

# Stop the entire import if any document fails
mongoimport \
  --uri 'mongodb://localhost:27017/myapp' \
  --collection products \
  --file products.json \
  --jsonArray \
  --stopOnError

# Check exit code in a script
if [ $? -ne 0 ]; then
  echo 'Import failed!'
  exit 1
fi

Vérifier la version et l’installation de mongoimport

mongoimport fait partie du paquet MongoDB Database Tools, installé séparément de mongod. Vérifiez qu’il est installé avec mongoimport --version. Sur les clusters Atlas, vous pouvez également utiliser la fonctionnalité d’importation de données de l’interface Atlas pour les petits fichiers, ou Atlas Data Federation pour les importations plus volumineuses dans un lac de données. Faites toujours correspondre la version des outils à celle de votre serveur afin d’éviter les problèmes de compatibilité.

# Verify installation
mongoimport --version
# mongodb-database-tools version: 100.9.0
# git version: ...
# Go version: ...

# Install on macOS with Homebrew
# brew install mongodb/brew/mongodb-database-tools

Conseils pour améliorer les performances des importations

Pour les importations volumineuses (des millions de documents), les réglages suivants améliorent considérablement le débit : (1) utilisez --numInsertionWorkers pour paralléliser les insertions (1 par défaut, essayez 4 pour les chargements en masse) ; (2) supprimez les index avant l’importation et recréez-les après — leur maintenance pendant une insertion en masse est coûteuse ; (3) utilisez le format JSONL plutôt qu’un grand tableau JSON afin d’activer le traitement en flux ; (4) effectuez l’importation depuis un hôte proche du serveur MongoDB afin de réduire la latence réseau.

# High-throughput bulk import with 4 parallel workers
mongoimport \
  --uri 'mongodb://localhost:27017/myapp' \
  --collection events \
  --file events.ndjson \
  --numInsertionWorkers 4

Vérification rapide

Testez votre compréhension des concepts de MongoDB et des bases de données NoSQL présentés dans cette leçon.

Récapitulatif de la leçon

Dans cette leçon, vous avez appris que mongoimport charge des fichiers JSON, JSONL et CSV dans une collection via la ligne de commande, que --mode upsert rend les importations idempotentes grâce à un champ de correspondance indiqué, et que --numInsertionWorkers ainsi que la suppression des index avant les importations en masse améliorent les performances. Nous allons maintenant explorer mongoexport pour exporter les données d’une collection vers des fichiers.

Gratuit pour commencer

Apprends JavaScript avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
30
Leçons
120

Questions Fréquemment Posées

La leçon « mongoimport : charger des fichiers JSON et CSV » est-elle gratuite ?

Oui — le texte complet de « mongoimport : charger des fichiers JSON et CSV » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours MongoDB Academy, passe à CoddyKit PRO. Le cours MongoDB Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « mongoimport : charger des fichiers JSON et CSV » ?

Les apprenants importeront des fichiers de données JSON et CSV dans une collection avec mongoimport, en utilisant différents indicateurs de mode. Tu pratiques MongoDB Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer MongoDB Academy ?

Aucune expérience préalable n'est requise. MongoDB Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « mongoimport : charger des fichiers JSON et CSV » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon MongoDB Academy ?

Oui. Chaque leçon MongoDB Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. mongoimport : charger des fichiers JSON et CSV
  2. mongoexport : exporter des collections vers des fichiers
  3. mongodump et mongorestore pour des sauvegardes complètes
  4. Alimenter les données avec des scripts Node.js
← Retour à MongoDB Academy