Quand vous devez comparer des fichiers CSV en ligne, évitez avant tout d’utiliser un diff de texte brut. Les fichiers CSV contiennent des données structurées. Les lignes changent de place, les colonnes sont renommées, de nouveaux champs apparaissent dans les exports : une comparaison ligne par ligne devient vite illisible.

Je préfère comparer les fichiers comme des tableaux : choisir une clé stable, mapper les colonnes, examiner les lignes ajoutées, supprimées, modifiées ou inchangées, puis exporter le diff. C’est exactement ce que permet l’outil CSV Diff de Datablist.

Dans ce guide, je vais comparer un ancien export de catalogue produits avec un fichier d’offres fournisseur plus récent. Les deux fichiers n’ont pas les mêmes colonnes, mais ils partagent les champs EAN, Internal ID, Price et Stock. C’est un cas concret : associer les produits grâce à leur EAN, comparer les prix et les stocks, puis exporter le résultat.

Accès rapide

Méthode rapide pour comparer des fichiers CSV

Si vos deux fichiers sont déjà prêts, la procédure est courte :

  1. Ouvrez l’outil CSV Diff de Datablist.
  2. Importez l’ancien fichier en tant que CSV d’origine.
  3. Importez le fichier récent en tant que CSV mis à jour.
  4. Commencez par la détection automatique, puis confirmez la colonne clé.
  5. Mappez les colonnes si les deux fichiers utilisent des noms différents.
  6. Conservez la jointure externe complète pour le premier audit.
  7. Examinez les lignes modifiées, ajoutées, supprimées et inchangées.
  8. Pour la première vérification, exportez le CSV Diff complet.
  9. Si vous avez besoin d’un fichier plus concis à transmettre, exportez uniquement les lignes modifiées.

Cette méthode est plus pertinente qu’un diff de texte, car la comparaison suit les enregistrements et non les numéros de ligne. Si un export CRM réorganise les contacts ou si un fournisseur ajoute une colonne, un diff textuel peut donner l’impression que tout le fichier a changé. Un diff de tableaux indique précisément quels enregistrements et quelles cellules ont été modifiés.

🔑 Choisissez la clé des lignes avant d’interpréter le diff

Une bonne colonne clé transforme une comparaison confuse en résultat exploitable. Utilisez un ID, un email, un SKU, un EAN ou un identifiant interne qui reste stable d’un export à l’autre.

Exemple : CSV Produits et CSV Offres

Pour ce tutoriel, j’utiliserai un jeu de données e-commerce fictif. Le premier fichier est un ancien export du catalogue produits. Le second est un flux plus récent d’offres provenant d’un fournisseur ou d’une marketplace.

Voici le CSV Produits d’origine :

IndexEANInternal IDNomMarqueCatégoriePrixDeviseStockDisponibilité
15901234123457PRD-001Gourde hermétiqueAcme OutdoorPlein air24.90EUR42En stock
25901234123464PRD-002Lunch box bentoNorthlineCuisine18.50EUR120En stock
35901234123471PRD-003Tote bag en cotonUrban GoodsAccessoires9.90EUR0Rupture de stock
45901234123488PRD-004Lampe de bureau LEDLumaBureau39.00EUR18En stock
55901234123495PRD-005Tapis de yogaBalanceFitSport29.00EUR65En stock
105901234123549PRD-010Souris sans filClickProÉlectronique34.00EUR55En stock

Le CSV Offres mis à jour contient moins de champs descriptifs, mais conserve les identifiants et les données commerciales qui m’intéressent :

Offer IDEANInternal IDSupplier SKUStockPrice
OFF-0015901234123457PRD-001ACM-BTL-013823.90
OFF-0025901234123464PRD-002NTH-LBX-0212018.50
OFF-0035901234123471PRD-003UGD-TOTE-03259.90
OFF-0045901234123488PRD-004LMA-LAMP-041835.00
OFF-0055901234123495PRD-005BFT-MAT-056529.00
OFF-0085901234123556PRD-011CLP-CAB-114416.50

Cette paire réunit tous les cas que je recherche généralement dans un exemple de CSV Diff : valeurs modifiées, nouvelles lignes, lignes supprimées, lignes inchangées et schémas différents. Avec l’échantillon complet, je m’attends à ce que PRD-001, PRD-003, PRD-004, PRD-006 et PRD-010 soient signalés comme modifiés. PRD-011 et PRD-012 devraient être ajoutés, tandis que PRD-008 et PRD-009 devraient être supprimés.

Étape 1 : importer les fichiers CSV

Ouvrez l’outil CSV Diff. Deux zones d’import s’affichent :

  • Original CSV : l’ancien export, l’instantané précédent ou le fichier de référence.
  • Updated CSV : l’export récent que vous souhaitez comparer au fichier d’origine.

L’ordre est important. Si une ligne existe uniquement dans le fichier mis à jour, Datablist lui attribue le statut added. Si elle existe uniquement dans le fichier d’origine, elle reçoit le statut removed.

Dans notre exemple, j’importe le CSV Produits comme fichier d’origine, puisqu’il correspond à l’ancien export du catalogue. J’importe le CSV Offres comme fichier mis à jour, car il représente le flux fournisseur le plus récent.

Écran d’import de CSV Diff avec les champs Original CSV et Updated CSV
Écran d’import de CSV Diff avec les champs Original CSV et Updated CSV

Une fois les deux fichiers sélectionnés, l’outil les analyse et prépare la première comparaison. Les fichiers CSV sont analysés et comparés dans votre navigateur. Le parser détecte les séparateurs courants — virgule, point-virgule, tabulation ou barre verticale — et prend en charge les encodages habituels, notamment UTF-8 et les fichiers de type Windows-1252.

Je vérifie malgré tout l’ordre des fichiers avant d’examiner le résultat. De nombreuses comparaisons erronées viennent simplement d’une inversion entre l’ancien et le nouveau fichier, qui conduit à lire les lignes ajoutées comme supprimées, et inversement.

Étape 2 : choisir comment associer les lignes

L’association des lignes est le réglage le plus important de cette procédure.

Datablist peut commencer par une détection automatique. L’outil recherche les colonnes susceptibles de contenir un identifiant, comme id, email, sku, uuid, external_id, record_id, user_id, contact_id et company_id.

Pour des données produits, je privilégie généralement :

  • EAN lorsqu’il est présent et unique.
  • Internal ID lorsque des EAN sont manquants, dupliqués ou propres à chaque fournisseur.
  • SKU uniquement si le même SKU est utilisé dans les deux fichiers.

Pour des fichiers CRM ou des listes de leads, la clé équivalente peut être email, contact_id, company_id ou l’ID d’un enregistrement CRM.

Réglages d’association de CSV Diff avec détection automatique et jointure externe complète
Réglages d’association de CSV Diff avec détection automatique et jointure externe complète

Le mode d’association dépend de la structure de vos données :

  • Utilisez une clé unique pour la plupart des exports. Une seule colonne stable est plus simple à contrôler.
  • Utilisez une clé composite lorsqu’une colonne seule n’est pas suffisamment unique, par exemple Company Domain avec Email.
  • Comparez les lignes complètes uniquement si vous ne disposez d’aucun identifiant stable.
  • Utilisez la détection automatique pour la première analyse, puis vérifiez la clé détectée avant de vous fier aux totaux.

⚠️ Une clé peu fiable multiplie les lignes ajoutées et supprimées

Si la clé est absente, dupliquée ou formatée différemment entre les exports, un même enregistrement peut apparaître sous la forme d’une ligne supprimée et d’une ligne ajoutée. Vérifiez les alertes de clés dupliquées avant d’utiliser le résultat pour effectuer une mise à jour.

La présence de doublons dans les clés ne rend pas le diff inutile, mais elle invite à la prudence. L’outil signale ces clés et je vérifie les lignes concernées avant de me fier aux totaux.

Étape 3 : mapper les colonnes de noms différents

Le mapping des colonnes détermine les champs à comparer.

Dans notre exemple, les deux fichiers partagent EAN, Internal ID, Stock et Price. Le fichier d’origine contient aussi Name, Brand, Category, Currency et Availability. Le fichier mis à jour comprend quant à lui Offer ID et Supplier SKU.

Je ne veux pas que des métadonnées propres au fournisseur soient considérées comme des modifications. Je souhaite uniquement comparer les colonnes qui répondent à mon besoin métier :

  • Associer les lignes grâce à EAN.
  • Comparer Stock avec Stock.
  • Comparer Price avec Price.
  • Conserver les colonnes descriptives comme contexte lorsqu’elles facilitent la vérification.
  • Ne pas mapper les champs sans rapport lorsqu’ils ne doivent pas influencer la comparaison.

Lorsque les noms de colonnes sont identiques, Datablist peut les aligner automatiquement. Leur ordre n’a pas besoin d’être le même. Le mapping manuel devient nécessaire lorsque les libellés ont changé. Un export CRM peut, par exemple, utiliser customer_id dans un fichier et Customer ID dans l’autre. Ne les associez que s’ils représentent bien la même donnée.

💡 Mappez uniquement les colonnes à comparer

De nouvelles colonnes de métadonnées apparaissent souvent dans les flux fournisseur et les exports CRM. Si un champ ne doit pas être comptabilisé comme une modification, ne le mappez pas ou utilisez-le uniquement comme contexte pendant la vérification.

Cette étape paraît anodine, mais c’est souvent celle qui fait gagner le plus de temps. Une mauvaise clé fausse l’association des lignes ; un mauvais mapping fausse le nombre de modifications.

Étape 4 : choisir la jointure et les options

Pour la première analyse, je recommande les réglages suivants :

  • Jointure externe complète.
  • Colonne clé stable.
  • Espaces en début et en fin de valeur ignorés.
  • Valeurs vides ou assimilées à null normalisées.
  • Comparaison sensible à la casse, sauf si les majuscules et minuscules ne doivent pas compter.

La jointure externe complète constitue le meilleur choix par défaut, car elle affiche tout : lignes associées, ajoutées et supprimées. Vous disposez ainsi d’une vue d’ensemble avant d’affiner le résultat.

Options de comparaison de CSV Diff pour l’ordre des colonnes, les espaces, la casse et la normalisation des valeurs nulles
Options de comparaison de CSV Diff pour l’ordre des colonnes, les espaces, la casse et la normalisation des valeurs nulles

Le type de jointure détermine les éléments affichés :

  • La jointure externe complète affiche les lignes associées, celles présentes uniquement dans le fichier d’origine et celles présentes uniquement dans le fichier mis à jour.
  • La jointure interne affiche uniquement les enregistrements présents dans les deux fichiers. Utilisez-la si seules les modifications des lignes communes vous intéressent.
  • La jointure gauche conserve le fichier d’origine comme base et exclut les lignes présentes uniquement dans le fichier mis à jour.

Les options de comparaison réduisent le bruit lié au formatage :

  • L’option d’ignorance des espaces supprime les espaces placés au début et à la fin des valeurs avant de comparer les cellules.
  • L’option d’ignorance de la casse considère Acme et ACME comme identiques.
  • La normalisation des valeurs vides et assimilées à null traite les champs vides, null, undefined, nil, none, n/a et na comme des valeurs équivalentes.

📘 Utilisez une jointure externe complète pour le premier audit

Commencez par une vue d’ensemble, puis affinez. Lorsque le nombre de lignes ajoutées, supprimées et modifiées vous paraît cohérent, exportez un fichier plus court contenant uniquement les lignes modifiées.

Pour les fichiers volumineux, les performances dépendent du navigateur et de l’appareil. L’aperçu est limité pour rester fluide, mais le CSV téléchargeable est généré à partir du résultat complet. Si un export est trop volumineux pour être vérifié confortablement, commencez par diviser le gros fichier CSV en plusieurs fichiers.

Étape 5 : vérifier les lignes ajoutées, supprimées et modifiées

Une fois la comparaison terminée, commencez par examiner le statut des lignes :

  • added : la clé existe uniquement dans le CSV mis à jour.
  • removed : la clé existe uniquement dans le CSV d’origine.
  • changed : la clé existe dans les deux fichiers et au moins une valeur mappée a changé.
  • unchanged : la clé existe dans les deux fichiers et les valeurs mappées correspondent après normalisation.

L’exemple des produits fournit des cas très clairs :

  • PRD-001 a changé, car Price est passé de 24.90 à 23.90 et Stock de 42 à 38.
  • PRD-003 a changé, car son stock est passé de 0 à 25.
  • PRD-011 a été ajouté, car son EAN apparaît uniquement dans le CSV Offres.
  • PRD-008 a été supprimé, car son EAN apparaît uniquement dans le CSV Produits.

Utilisez les filtres de statut pour cibler votre vérification. Je commence généralement par Changed, puis je consulte Added et Removed. Je garde Unchanged pour la fin, sauf si j’ai besoin d’une piste d’audit complète.

Tableau d’aperçu de CSV Diff avec filtres de statut, recherche, copie et téléchargement
Tableau d’aperçu de CSV Diff avec filtres de statut, recherche, copie et téléchargement

La vue des lignes modifiées est particulièrement utile pour examiner les différences au niveau des cellules. Pour chaque colonne concernée, elle affiche côte à côte la valeur d’origine et la valeur mise à jour.

Vue des lignes modifiées de CSV Diff avec les valeurs d’origine et mises à jour côte à côte
Vue des lignes modifiées de CSV Diff avec les valeurs d’origine et mises à jour côte à côte

Avant l’export, j’effectue quelques contrôles rapides :

  • Le nombre de lignes ajoutées et supprimées semble-t-il plausible ?
  • L’outil a-t-il associé les lignes avec la clé attendue ?
  • Les clés dupliquées sont-elles signalées ?
  • Les colonnes sont-elles correctement mappées ?
  • Les différences de format uniquement sont-elles ignorées lorsqu’elles doivent l’être ?
  • Les modifications sont-elles cohérentes sur quelques lignes examinées en détail ?

La section récapitulative permet une vérification supplémentaire. Elle présente les informations de traitement, les colonnes mappées, les alertes de clés dupliquées et le nombre de lignes pour chaque statut.

Cartes récapitulatives de CSV Diff avec le nombre de lignes modifiées, ajoutées, supprimées et inchangées, ainsi que les informations de traitement et de mapping
Cartes récapitulatives de CSV Diff avec le nombre de lignes modifiées, ajoutées, supprimées et inchangées, ainsi que les informations de traitement et de mapping

Si les chiffres vous semblent étranges, n’exportez pas encore. Vérifiez d’abord la clé et le mapping des colonnes : c’est généralement là que se situe le problème.

Étape 6 : exporter le résultat du CSV Diff

Lorsque l’aperçu vous convient, exportez le résultat. Datablist propose plusieurs formats de sortie selon votre besoin :

  • Summary CSV : pour obtenir le statut des lignes, les clés, les totaux et une vue d’ensemble adaptée à un audit.
  • Changed rows CSV : si le destinataire doit uniquement vérifier les enregistrements qui présentent des différences.
  • Full diff CSV : pour afficher côte à côte les valeurs d’origine et les valeurs mises à jour.

Pour une première analyse, je préfère le Full diff CSV. Il conserve davantage de contexte, ce qui facilite l’explication ultérieure d’une modification. Une fois la procédure validée, je passe au Changed rows CSV pour obtenir un fichier plus court.

Vous pouvez également choisir le séparateur :

  • La virgule pour la plupart des usages dans un tableur.
  • Le point-virgule lorsque vos paramètres régionaux ou le système de destination l’exigent.
  • La barre verticale ou la tabulation pour les outils qui imposent ces formats.

L’outil vous permet de copier le CSV des différences ou de le télécharger. Les fichiers téléchargés suivent ce modèle :

csv-diff-{originalBase}-vs-{updatedBase}.csv

Si le résultat exporté est volumineux et doit être filtré ou modifié avant son partage, consultez le guide Datablist pour modifier de gros fichiers CSV en ligne.

Exemple de tableau de résultats

Voici un aperçu du contenu possible d’un Full diff exporté pour notre exemple de produits.

statuskeychanged_columnsoriginal:Priceupdated:Priceoriginal:Stockupdated:Stock
changed5901234123457Price|Stock24.9023.904238
changed5901234123471Stock9.909.90025
added590123412355616.5044
removed59012341235257.5088

Le CSV exporté peut inclure :

  • status : added, removed, changed ou unchanged.
  • key : la valeur utilisée pour associer la ligne.
  • __row_index_original : le numéro de ligne dans le CSV d’origine, lorsqu’elle y figure.
  • __row_index_updated : le numéro de ligne dans le CSV mis à jour, lorsqu’elle y figure.
  • __duplicate_key : indique si la clé sélectionnée apparaît plusieurs fois.
  • changed_columns : les champs modifiés.
  • changed_columns_count : le nombre de champs modifiés.
  • summary : un résumé lisible des modifications.
  • Les paires original:{column} et updated:{column} pour une vérification côte à côte.

J’apprécie ce format, car il est facile à transmettre. Le destinataire peut filtrer sur status = changed, trier les lignes selon changed_columns_count ou isoler les enregistrements ajoutés et supprimés sans relancer la comparaison.

Quand comparer des fichiers CSV de cette façon

Cette méthode convient dès que vous disposez de deux instantanés et souhaitez savoir ce qui a changé. Voici quelques cas d’usage :

  • Mise à jour des prix et des stocks d’un catalogue produits.
  • Vérification d’un flux fournisseur avant l’import de nouvelles offres.
  • Comparaison d’un export CRM avant et après un nettoyage.
  • Actualisation d’une liste de leads.
  • Comparaison d’instantanés de stock.
  • Audit de fichiers transmis sous forme de feuilles de calcul.
  • Comparaison de CSV générés dans le cadre d’une conversion depuis JSON.

Par exemple, après avoir converti un JSON imbriqué en CSV, vous pouvez utiliser CSV Diff pour comparer deux exports générés. Si vous préparez des enregistrements pour un CRM, lancez le diff avant un nettoyage des données plus large afin d’identifier les lignes qui ont changé.

Comparer, joindre ou dédupliquer : le bon workflow

Comparer des fichiers CSV ne revient pas à les joindre ou à les dédupliquer. Utilisez CSV Diff lorsque votre question est :

Qu’est-ce qui a changé entre ces deux instantanés ?

Utilisez une jointure lorsque votre question est :

Comment réunir les champs de deux fichiers ?

Dans ce cas, consultez le guide pour joindre des fichiers CSV grâce à un identifiant unique.

Utilisez la déduplication lorsque votre question est :

Quels enregistrements apparaissent plusieurs fois dans un ou plusieurs fichiers ?

Consultez alors le guide pour supprimer les doublons d’un fichier CSV.

Cette distinction est importante, car chaque workflow répond à un objectif différent. CSV Diff sert à comparer des instantanés et à exporter leurs différences. Ce n’est ni un outil de fuzzy matching ni un outil de fusion.

Résolution des problèmes et cas particuliers

Les lignes apparaissent comme ajoutées et supprimées

Commencez par vérifier la colonne clé. Si la clé a changé entre les fichiers, Datablist ne peut pas reconnaître les deux lignes comme un seul et même enregistrement. Vérifiez également l’ordre des fichiers. Si les fichiers d’origine et mis à jour sont inversés, les lignes ajoutées et supprimées le seront aussi.

Trop de cellules apparaissent comme modifiées

Vérifiez les options de comparaison. Activez la suppression des espaces si ceux-ci ne doivent pas compter, ignorez la casse si les majuscules et minuscules ne sont pas pertinentes, normalisez les valeurs vides si les champs vides et les valeurs de remplacement doivent être équivalents, puis contrôlez le mapping des champs renommés.

Les noms de colonnes sont différents

Utilisez le mapping manuel. Associez uniquement les champs qui ont la même signification. Ne mappez pas les colonnes sans rapport si elles ne doivent pas influencer la comparaison.

Des clés dupliquées apparaissent

Considérez les clés dupliquées comme un signal à examiner. Le résultat peut rester utile, mais ces doublons indiquent que l’identifiant sélectionné n’est pas suffisamment unique. Nettoyez les fichiers sources ou choisissez une clé plus fiable avant d’utiliser les totaux pour un import.

Le fichier est lent ou l’aperçu est limité

Les performances des fichiers volumineux dépendent de votre navigateur et de votre appareil. Utilisez l’aperçu pour effectuer vos vérifications, puis téléchargez le CSV Diff pour obtenir le résultat complet.

L’analyse du CSV échoue

Recherchez des champs entre guillemets non fermés, des séparateurs inhabituels ou des problèmes d’encodage. Un seul champ mal fermé peut rendre tout le fichier CSV invalide.

Conclusion

La meilleure façon de comparer deux exports CSV consiste à les traiter comme des données et non comme du texte. Importez l’ancien fichier en tant que CSV d’origine et le nouveau en tant que CSV mis à jour, choisissez une clé stable, mappez les colonnes, examinez le statut des lignes, puis exportez le diff.

Mes réglages par défaut sont simples : jointure externe complète, clé stable, suppression des espaces superflus, normalisation des valeurs assimilées à null et export du diff complet pour la première vérification.

Vous pouvez effectuer toute cette procédure avec l’outil CSV Diff de Datablist.

FAQ

Comment comparer deux fichiers CSV en ligne ?

Ouvrez l’outil CSV Diff de Datablist, importez l’ancien fichier dans Original CSV et le plus récent dans Updated CSV, choisissez une colonne clé, vérifiez le résultat, puis téléchargez le CSV Diff.

Peut-on comparer des CSV par ID, email, SKU ou EAN ?

Oui. Utilisez l’identifiant commun comme colonne clé. Les ID d’enregistrement, adresses email, SKU, EAN, ID internes, ID d’entreprise et toute autre valeur stable d’un export à l’autre constituent de bonnes clés.

Et si les lignes ne sont pas dans le même ordre ?

Utilisez une association basée sur une clé. Lorsque les lignes sont associées grâce à une clé stable, elles n’ont pas besoin d’apparaître dans le même ordre dans les deux fichiers.

Peut-on comparer des CSV aux colonnes différentes ?

Oui. Mappez manuellement les colonnes lorsque leurs noms diffèrent. Par exemple, associez customer_id dans un fichier à Customer ID dans l’autre s’ils représentent le même identifiant.

Quelle jointure choisir pour comparer des CSV ?

Utilisez une jointure externe complète pour le premier audit. Elle affiche les lignes associées, ajoutées et supprimées. Choisissez une jointure interne uniquement si vous vous intéressez aux enregistrements présents dans les deux fichiers.

Peut-on ignorer les espaces, la casse ou les valeurs vides ?

Oui. Vous pouvez supprimer les espaces superflus, comparer le texte sans tenir compte de la casse et considérer comme équivalentes les valeurs vides ou assimilées à null. Je conserve généralement la suppression des espaces et la normalisation des valeurs vides.

Peut-on exporter uniquement les lignes modifiées ?

Oui. Utilisez la sortie Changed rows si vous avez besoin d’un fichier de vérification plus court. Je recommande néanmoins d’exporter une première fois le diff complet afin de valider la comparaison.

Que signifient added, removed, changed et unchanged ?

added signifie que la clé apparaît uniquement dans le CSV mis à jour. removed indique qu’elle figure uniquement dans le CSV d’origine. changed signifie que la clé est présente dans les deux fichiers, mais que des valeurs mappées diffèrent. unchanged signifie que la clé et les valeurs mappées correspondent dans les deux fichiers.

Les fichiers CSV sont-ils envoyés sur un serveur ?

Les fichiers CSV sont analysés et comparés dans votre navigateur. Il s’agit d’un outil de comparaison côté navigateur, et non d’un workflow d’import ou de synchronisation vers une collection Datablist.

Peut-on comparer de gros fichiers CSV ?

Oui, mais les fichiers très volumineux dépendent des performances de votre navigateur et de votre appareil. L’aperçu est limité pour préserver la fluidité, tandis que le CSV téléchargeable est généré à partir du résultat complet.