Command Palette

Search for a command to run...

CSV Diff : Comparez deux fichiers CSV sans qu'une ligne de diff ne vous lie

CSV Diff : Comparez deux fichiers CSV sans qu'une ligne de diff ne vous lie

T
Toolz Team
|Aug 23, 2026|17 min Lire

Fait partie de la collection Diff et comparer

Le rapport de bug qui m'a fait construire cela comptait trois mots : &quot ; la synchronisation fait tomber les lignes.&quot ; Un client&#39 ; le flux de produits est arrivé sous forme de CSV nocturne, mon importateur Laravel l'a réécrit, et quelque part entre les deux fichiers, une poignée de SKU disparaissait. Mon premier réflexe était évident : jeter les deux fichiers dans une ligne diff. La différence est revenue en rouge uni. Chaque ligne était &quot ; modifié et quot ; parce que l'exportation avait été ré-triée par une colonne différente cette nuit-là, donc la ligne 4 de l'ancien fichier était la ligne 900 dans le nouveau outil édité, ce qui était techniquement correct. Vérificateur de différences CSV2, et ce guide est le raisonnement qui le sous-tend.

tl;dr : Un CSV diff compare deux fichiers CSV sous forme de données structurées au lieu de lignes de texte. Correspondre aux lignes par une colonne de clé telle que id ou email et chaque enregistrement est comparé à son homologue partout où il se déplaçait dans le fichier, donc une exportation re-triée ne rapporte pas des milliers de fausses modifications L'outil Toolz analyse les deux fichiers avec une machine à états RFC 4180, divise le résultat en lignes ajoutées, supprimées et modifiées, et montre la cellule exacte qui diffère pour chaque ligne modifiée Il s'exécute entièrement côté client : aucun téléchargement, aucune inscription, fonctionne hors ligne.

Je construis des produits SaaS sur Laravel et React et je livre des plugins WordPress, ce qui signifie que je passe beaucoup de temps à concilier les exportations : un système&#39 ; la vue des données par rapport à un autre&#39 ; s, hier soir&#39 ; s instantané par rapport à ce soir&#39 ; s, le fichier qu'un client jure avoir envoyé par rapport au fichier qui est réellement arrivé CSV est la lingua franca pour tout cela, et comparer correctement deux CSV est une de ces tâches qui semble triviale jusqu'à ce que vous essayiez de le faire avec le mauvais outil C'est le guide que j'aimerais que la version frustrée de moi ait lu.

Qu'est-ce qu'un CSV diff checker ?

Un vérificateur de différences CSV prend deux fichiers CSV, une version originale et une version modifiée, et rapporte comment la seconde diffère de la première au niveau des lignes et des cellules Au lieu de la sortie des lignes ajoutées et supprimées d'une différence de texte, vous obtenez quatre compartiments : les lignes qui n'existent que dans le nouveau fichier (ajouté), les lignes qui n'existent que dans l'ancien fichier (supprimé), les lignes qui existent dans les deux mais dont les valeurs diffèrent (modifiées) et les lignes qui sont identiques (inchangées).Pour chaque ligne modifiée, un bon outil va un niveau plus profond et nomme les colonnes spécifiques qui ont bougé, montrant l'ancienne valeur à côté de la nouvelle.

La distinction qui fait fonctionner l'ensemble est la façon dont les lignes sont appariées sur les deux fichiers. Une différence CSV peut correspondre à une colonne de clé, traitant une valeur comme une id ou un email En tant qu'identité de l'enregistrement, ou il peut correspondre par position, comparer la première ligne à la première ligne La correspondance des clés est ce que vous voulez presque chaque fois que vous comparez des exportations, car le même enregistrement peut atterrir sur une ligne différente à chaque fois que les données sont tirées La correspondance de position est pour les fichiers où le numéro de ligne lui-même est significatif et stable, comme un grand livre numéroté auquel on ne peut ajouter que Choisir le bon mode est la décision la plus importante, et c'est pourquoi l'outil Toolz le met au premier plan plutôt que de deviner.

Pourquoi une ligne diff devient-elle complètement rouge sur une exportation re-triée ?

C'est l'échec qui envoie les gens à la recherche d'un outil spécifique au CSV, donc cela vaut la peine d'être compris avec précision Une diff de texte, du genre intégré à Git et à chaque éditeur de code, compare les fichiers ligne par ligne et dans l'ordre Il exécute un algorithme qui trouve la plus longue sous-séquence commune de lignes et marque tout le reste comme inséré ou supprimé C'est exactement juste pour le code source, où l'ordre des lignes est la signification du fichier Déplacez une fonction et vous avez véritablement changé le fichier.

Une exportation CSV est l'inverse L'ordre des lignes est généralement un accident de n'importe quoi ORDER BY la requête est arrivée à utiliser, et elle peut changer entre deux exécutions qui contiennent des données identiques Au moment où l'ordre de tri se décale, une diff de ligne voit presque chaque ligne dans une nouvelle position, ne parvient pas à les aligner, et signale l'ensemble du fichier comme modifié Les informations que vous vouliez, que trois enregistrements ont en fait changé, sont enterrées sous des milliers de faux positifs La diff a fait son travail fidèlement ; elle a juste répondu à une question sur les lignes quand vous aviez une question sur les enregistrements.

Une diff CSV corrige cela en analysant d'abord le fichier en lignes et colonnes, puis en comparant les enregistrements par leur clé plutôt que par leur numéro de ligne. Le nouveau tri du fichier n'a aucun effet, car le SKU A-1007 est comparé à la ligne avec SKU A-1007 dans l'autre fichier, peu importe où l'un ou l'autre siège C'est toute la raison pour laquelle la catégorie existe, et c'est pourquoi j'atteins le Outil de diffusion CSV au lieu de git diff chaque fois que le fichier est une donnée plutôt qu'un code.

Quel rapport entre la RFC 4180 et la comparaison des fichiers ?

Tout, car vous ne pouvez pas comparer correctement deux CSV si vous ne pouvez pas les analyser correctement en premier Le CSV a été utilisé pendant des décennies avant que quiconque ne le standardise En 2005 l'IETF a publié RFC 4180(en), qui décrit le format commun et le text/csv type MIME. Ce n'est pas une loi à laquelle chaque outil obéit, mais c'est la chose la plus proche d'un contrat partagé, et il définit les règles selon lesquelles une comparaison naïve se trompe.

La règle qui compte le plus est la citation Un champ peut être enveloppé dans des guillemets doubles, et il doit l'être s'il contient une virgule, une guillemets doubles ou un saut de ligne Une guillemets doubles à l'intérieur d'un champ cité est échappée en doublant donc la valeur "Doe, John" est un seul champ, et "She said ""hi""" est la valeur She said "hi". Une comparaison qui divise chaque ligne en virgules sera coupée "Doe, John" dans deux champs, décalez chaque colonne après, puis signalez avec confiance que la ligne a changé alors qu'elle ne l'a pas fait. La différence Toolz exécute la même machine à états RFC 4180 qui alimente le Visionneuse CSV: il parcourt le texte caractère par caractère, suit s'il se trouve à l'intérieur d'un champ cité et ne traite une virgule ou une nouvelle ligne comme un séparateur que lorsqu'il se trouve à l'extérieur des guillemets. Obtenir la bonne analyse est une condition préalable pour obtenir la bonne différence, et c'est la partie que les scripts roulés à la main sautent presque toujours.

Comment comparer deux fichiers CSV avec l'outil ?

Le flux est court exprès Collez le fichier original dans la première case et le fichier modifié dans la seconde, ou cliquez sur Charger l'échantillon pour voir un exemple travaillé où une ligne est modifiée, une est ajoutée et une est supprimée.

Confirmez le délimiteur Détectez automatiquement les scores virgule, point-virgule, onglet et tuyau en fonction de la cohérence avec laquelle chacun divise les premières lignes en un même nombre de colonnes, ce qui gère correctement les fichiers de points-virgules européens et les exportations séparées par des onglets. Si la détection est erronée pour vos données, définissez-la à la main Laissez le commutateur d'en-tête activé si la première ligne de chaque fichier contient les noms de colonnes, ce qui alimente le sélecteur clé-colonne.

Choisissez maintenant la façon dont les lignes sont appariées Choisissez une colonne de clé dans la liste déroulante, généralement un id, email(en anglais), ou SKU, et l'outil compare les enregistrements par cette valeur Sélectionnez plutôt Position pour comparer ligne par ligne Deux bascules affinent la comparaison : activez la correspondance insensible à la casse si Active et active Devrait compter comme la même valeur, et laisser trim-whitespace sur donc un espace de tête égaré ne s'enregistre pas comme un changement Cliquez sur Comparer, et le résumé affiche quatre comptes en un coup d'œil Ouvrez l'onglet Modifié pour développer chaque ligne modifiée et voir exactement quelles cellules déplacées, ou les onglets Ajouté et supprimé pour voir les lignes complètes comme un tableau Lorsque vous avez terminé, Copier Rapport ou Télécharger exporte un résumé en texte brut de chaque différence, y compris la valeur avant et après de chaque cellule modifiée, prêt à coller dans une demande d'extraction, un ticket, ou un email au client.

Quand dois-je faire correspondre par clé par position ?

C'est le choix qui détermine si le diff est utile ou le bruit, voici donc la règle que j'utilise, présentée sous forme de tableau.

situation Match par pourquoi
Exportation de base de données ou d'API pouvant être re-triée Colonne clé Le même enregistrement atterrit sur des lignes différentes que chacun tire ; la clé est son identité stable
Concilier deux systèmes&#39 ; vue des mêmes enregistrements Colonne clé Vous vous souciez de savoir si un record existe et correspond des deux côtés, pas là où il se trouve
Comparaison de la nuit dernière et du n°39 ;s instantané à ce soir&#39 ;s Colonne clé Les lignes sont ajoutées et supprimées au fil du temps, de sorte que les numéros de ligne dérivent
Ajoutez uniquement un journal ou un grand livre avec un ordre fixe Position Le numéro de ligne est stable et significatif ; la ligne N est véritablement &quot ; le Nième événement&quot ;
Deux fichiers que vous connaissez partagent exactement le même ordre de ligne Position Aucune clé n'existe, mais la commande est garantie identique
Un fichier sans colonne unique du tout Position Il n'y a rien sur lequel s'appuyer, alors comparez dans l'ordre et acceptez la limitation

La version courte : atteindre la correspondance de clé par défaut, car la plupart des CSV sont des exportations d'enregistrements qui portent un identifiant Revenez à la correspondance de position uniquement lorsqu'il n'y a pas de clé utilisable ou lorsque l'ordre de ligne fait véritablement partie des données Si vous choisissez une clé et que l'outil avertit que la colonne contient des valeurs en double, c'est un signal la colonne n'est pas réellement unique, et vous devriez soit choisir une meilleure clé, soit nettoyer la source J'ai attrapé plus d'une exportation cassée précisément parce que la colonne &quot ; unique&quot ; ID s'est avérée ne pas l'être.

Comment montre-t-il ce qui a réellement changé d’affilée ?

Un compte de &quot ;5 lignes changées&quot ; est un début, mais la question que vous avez vraiment est &quot ; changé comment ?&quot ; La diff Toolz répond que par ligne Lorsqu'un enregistrement apparié diffère, il compare les deux versions colonne par colonne et répertorie uniquement les cellules qui se sont déplacées, chacune affichée comme la valeur précédente frappée à côté de la nouvelle valeur Une ligne client où seulement le plan colonne est passée de free à pro rapporte cette cellule unique, pas l'enregistrement entier, vous ne restez donc pas à observer deux longues rangées en essayant de repérer le champ qui a changé.

Cette vue au niveau de la cellule est l'endroit où un CSV diff gagne sa garde sur une feuille de calcul&#39 ; ses propres fonctionnalités de comparaison, qui ont tendance à mettre en évidence les cellules avec la couleur mais ne vous donnent rien à copier ou coller dans une revue Le rapport exporté épelle chaque changement dans le texte : la clé de la ligne, le nom de la colonne, et l'ancienne et la nouvelle valeur En pratique je colle cela directement dans la description d'une demande d'extraction afin qu'un réviseur puisse voir l'impact des données d'une migration sans ouvrir les fichiers eux-mêmes C'est le même instinct derrière la structure JSON diff, qui signale les clés modifiées avec leurs chemins plutôt que les changements de ligne bruyants ; les deux outils existent parce que &quot ; qu'est-ce qui a changé&quot ; est une meilleure question que &quot ; quelles lignes diffèrent.&quot ;

Est-il sécuritaire de comparer des fichiers CSV sensibles en ligne ?

Pour cet outil, oui, et la raison est architecturale plutôt qu'une petite promesse Chaque étape, en analysant les deux fichiers, en faisant correspondre les lignes, en calculant les différences par cellule et en créant le rapport, s'exécute en JavaScript à l'intérieur de votre propre onglet de navigateur Il n'y a pas de téléchargement, pas de serveur aller-retour, et rien n'est enregistré ou stocké Vous pouvez le prouver en ouvrant votre navigateur&#39 ; s onglet réseau et en cliquant sur Comparer : aucune requête ne quitte la page Une fois la page chargée, vous pouvez vous déconnecter entièrement d'Internet et cela continue de fonctionner.

Cela est important car les CSV people diff sont parmi les fichiers les plus sensibles que possède une entreprise Les listes de clients, les exportations de transactions, les lignes de paie, les tables d'inventaire et les journaux d'accès voyagent tous en tant que CSV Un outil de comparaison qui télécharge vos fichiers sur un serveur, aussi bien intentionné soit-il, transforme deux feuilles de calcul privées en quelqu'un d'autre&#39 ; les entrées de journal Le traitement côté client supprime la question : les données ne quittent jamais la machine sur laquelle elles ont démarré Ce défaut est délibéré sur chaque outil sur Toolz.dev, et j'ai écrit l'argument le plus long dans le guide de confidentialité des données pour les outils en ligne pour tous ceux qui veulent le raisonnement complet.

Comment un CSV diff s'intègre-t-il dans un véritable workflow ?

Le diff est rarement le travail entier ; c'est une station dans un pipeline Le patron que j'ai frappé le plus souvent est la vérification : j'exécute une importation ou une migration, puis diff l'avant et l'après exportations pour confirmer le script a fait exactement ce que je m'attendais et rien de plus Une nette diff de &quot ; trois changés, zéro supprimé&quot ; est un bien meilleur signe une migration travaillée qu'une coche verte du script qui l'a exécuté Quand la diff montre une suppression je n'avais pas l'intention, j'ai attrapé le bug avant qu'il n'atteigne la production au lieu d'après.

Les outils qui l'entourent dépendent de la destination du fichier. Si je dois considérer un fichier comme une grille triable avant de comparer, le Visionneuse CSV rend la même analyse RFC 4180 qu'un tableau Si la comparaison que je souhaite concerne vraiment l'appartenance, quelles valeurs apparaissent dans un fichier mais pas dans l'autre plutôt que quelles lignes ont changé, le outil de comparaison de deux listes définit l'arithmétique sur des colonnes uniques et est le meilleur ajustement Et lorsque les données doivent devenir quelque chose qu'une API peut consommer, le Convertisseur CSV vers JSON est le prochain saut Aucun de ceux-ci ne télécharge vos données, vous pouvez donc les enchaîner sur le même fichier privé sans une seconde réflexion Si vous êtes en train d'assembler un kit pour ce genre de travail de données, mon Guide d'outils pour les développeurs Web marche à travers la façon dont les pièces se connectent.

Questions fréquentes

Comment comparer deux fichiers CSV ? Ouvrez le Vérificateur de différences CSV« Coller le CSV original dans la première case et le CSV modifié dans la seconde », confirmer les paramètres du délimiteur et de l'en-tête, choisir une colonne de clé ou une correspondance de position et cliquer sur Comparer Le résultat est divisé en lignes ajoutées, supprimées et modifiées, et chaque ligne modifiée affiche les cellules exactes qui diffèrent Tout s'exécute dans votre navigateur, de sorte que les fichiers ne sont jamais téléchargés.

Quelle est la différence entre l'appariement des clés et l'appariement des positions ? Les paires de clés correspondantes se rangent dans une colonne choisie de même valeur, comme id[traduction], un enregistrement est donc comparé à son homologue partout où il apparaît dans l'un ou l'autre des fichiers La correspondance de position compare la première ligne à la première ligne dans l'ordre des fichiers Utilisez la correspondance de clé pour les exportations qui peuvent être re-triées, et la correspondance de position pour les fichiers d'ordre fixe comme un journal append-only.

Pourquoi une différence de texte affiche-t-elle chaque ligne telle que modifiée lorsque les données bougent à peine ? Parce qu'une diff de texte compare les fichiers ligne par ligne et dans l'ordre Si l'exportation est re-triée, presque chaque ligne atterrit dans une nouvelle position et la diff marque tout le fichier comme modifié, même si les enregistrements sous-jacents sont les mêmes Une diff CSV analyse le fichier en lignes et colonnes et compare les enregistrements par clé, donc le re-tri n'a aucun effet et seules les modifications authentiques sont rapportées.

Montre-t-il quelle cellule spécifique a changé d'affilée ? Oui. Lorsqu'une ligne appariée diffère, l'outil répertorie chaque colonne modifiée par son nom et affiche la valeur précédente à côté de la nouvelle valeur. Une ligne où seule la colonne d'état est passée d'active à fermée signale cette cellule unique plutôt que de signaler la ligne entière.

Quels délimiteurs supporte-t-il ? virgule, point-virgule, onglet et tuyau Le délimiteur est automatiquement détecté à partir du premier fichier en choisissant le séparateur qui produit un nombre de colonnes cohérent sur les premières lignes, et vous pouvez le remplacer manuellement lorsque la détection est incorrecte pour vos données.

Que se passe-t-il si ma colonne de clés a des valeurs en double ? L'outil vous avertit que la colonne de clé contient des doublons et compare uniquement la première ligne pour chaque clé Les clés en double signifient généralement que la colonne n'est pas un véritable identifiant unique, donc l'avertissement est une invite pour choisir une clé différente ou nettoyer les données avant de faire confiance à la différence.

Mes fichiers CSV sont-ils téléchargés n'importe où ? Non. Toutes les analyses et comparaisons s'exécutent localement dans votre navigateur avec JavaScript simple Rien n'est transmis, enregistré ou stocké, et vous pouvez le confirmer dans l'onglet réseau où aucune requête n'apparaît. L'outil continue également de fonctionner hors ligne une fois la page chargée.

Quelle taille de fichier peut-il gérer ? La correspondance de clés utilise des cartes de hachage plutôt que des boucles imbriquées, elle évolue donc à peu près linéairement et gère confortablement des dizaines de milliers de lignes. La limite pratique est que votre navigateur restitue un très grand ensemble de résultats, et non la comparaison elle-même.

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!