Maîtriser les fichiers CSV avec l'IA : structure, cas d'usage et avantages clés

Presque tous les systèmes que vous utilisez peuvent exporter un fichier CSV. C'est pourquoi il survit, et c'est aussi pourquoi il plante de manière totalement inattendue.
Cet article présente ce que le format spécifie réellement, les points de divergence entre les implémentations et les tâches pour lesquelles il constitue véritablement le bon choix.
Tout ce qui concerne ce format provient de la RFC 4180, le document d'octobre 2005 qui a enregistré le type de média text/csv. Le même texte est disponible en miroir sur le IETF datatracker.
Ce qu'est réellement un fichier CSV
Un fichier CSV est du texte brut organisé en enregistrements et en champs. Il n'y a pas de classeur, pas de couche de mise en forme, ni de moteur de formule sous-jacent.
La RFC 4180 est particulièrement franche quant à son propre statut. Elle indique qu'« il n'existe pas de spécification formelle, ce qui permet une grande variété d'interprétations des fichiers CSV. »
Le document décrit donc une convention plutôt qu'une règle absolue. Selon ses propres termes, il définit « le format qui semble être suivi par la plupart des implémentations. »
Cette simple phrase explique la majeure partie des difficultés liées au CSV. Deux outils peuvent être tout à fait cohérents et pourtant ne pas s'accorder sur le traitement d'un même fichier.
Les sept règles de la spécification
La RFC 4180 énumère sept règles. Elles sont suffisamment courtes pour être mémorisées, et cela en vaut la peine.
- « Chaque enregistrement est situé sur une ligne distincte, délimitée par un saut de ligne (CRLF). »
- « Le dernier enregistrement du fichier peut ou non comporter un saut de ligne final. »
- Il peut y avoir une ligne d'en-tête facultative sur la première ligne, avec le même nombre de champs que les enregistrements.
- Les champs sont séparés par des virgules, et « chaque ligne doit contenir le même nombre de champs tout au long du fichier. »
- Les champs peuvent ou non être entourés de guillemets doubles.
- « Les champs contenant des sauts de ligne (CRLF), des guillemets doubles et des virgules doivent être entourés de guillemets doubles. »
- Un guillemet double à l'intérieur d'un champ entre guillemets « doit être échappé en le faisant préciser d'un autre guillemet double. »
Deux clauses de ces règles causent plus de problèmes que toutes les autres réunies.
Les espaces sont des données. La règle 4 stipule que « les espaces sont considérés comme faisant partie d'un champ et ne doivent pas être ignorés. » Un espace superflu crée une valeur différente.
Pas de virgule finale. La même règle indique que « le dernier champ de l'enregistrement ne doit pas être suivi d'une virgule. » Une virgule finale implique un champ vide supplémentaire.
Pourquoi deux fichiers CSV valides peuvent tout de même diverger
La règle 5 contient un aveu qui présage la plupart des dysfonctionnements réels. La RFC 4180 note que « certains programmes, tels que Microsoft Excel, n'utilisent pas du tout de guillemets doubles. »
Dès lors que l'utilisation des guillemets est facultative, la règle d'échappement de la règle 7 devient elle aussi conditionnelle. Un fichier écrit par un outil peut être lu différemment par un autre sans qu'aucun des deux n'ait tort.
La grammaire formelle montre à quel point la marge de manœuvre est étroite. La définition des champs de la spécification n'autorise que les formes échappées ou non échappées, la forme échappée encadrant les virgules, les retours chariot et les sauts de ligne dans des guillemets doubles.
En pratique, c'est là qu'un simple nom de client contenant une virgule transforme une ligne en deux.
L'erreur est silencieuse, ce qui la rend coûteuse. Aucun message d'erreur ne s'affiche. Vous obtenez simplement un fichier contenant plus de lignes qu'il ne devrait, et les lignes supplémentaires semblent tout à fait plausibles.
Les deux paramètres à l'origine de la plupart des dysfonctionnements
L'enregistrement MIME dans la RFC 4180 ne liste aucun paramètre obligatoire. Il en liste exactement deux facultatifs : charset et header.
Tous deux sont facultatifs, et ce sont les coupables habituels lorsqu'un import échoue.
Charset. L'enregistrement note que « l'usage courant du CSV est l'US-ASCII », tout en autorisant d'autres jeux de caractères. Rien dans le fichier n'indique celui qui a été utilisé, c'est pourquoi les noms accentués et les symboles monétaires s'affichent sous forme de caractères illisibles.
Header. La règle 3 rend la ligne d'en-tête facultative, et l'enregistrement précise que sa présence « devrait être indiquée via le paramètre optionnel header. » Un fichier brut ne vous dit pas si la première ligne contient des données ou des étiquettes.
Un troisième problème ne figure pas du tout dans la spécification, car celle-ci n'a rien à dire à ce sujet : il n'y a pas de types de données. Chaque champ est du texte jusqu'à ce qu'un outil en aval en décide autrement.
Dans quels cas un fichier CSV est le bon choix
Ce format l'emporte sur le plan de la portabilité, ce qui n'est pas négligeable.
Transférer des données entre des systèmes qui n'ont rien en commun. N'importe quels outils capables de lire du texte peuvent s'échanger un fichier CSV.
Archiver un document que vous devrez encore ouvrir dans dix ans. Il n'y a pas de lecteur propriétaire risquant de devenir obsolète.
Streaming et ajout de données. Comme chaque enregistrement correspond à une ligne, un processus peut écrire des lignes sans avoir à réécrire tout le fichier.
Comparaison (diff) et contrôle de version. Le texte structuré par lignes fonctionne avec les outils que vous utilisez déjà pour le code.
Les limites d'un fichier CSV
Cette même simplicité supprime des éléments sur lesquels vous pourriez vous appuyer.
| Ce que vous perdez | Pourquoi c'est important |
|---|---|
| Types de données | Les zéros non significatifs, les identifiants longs et les dates sont réinterprétés lors de l'importation |
| Feuilles multiples | Un fichier correspond à un tableau, les relations doivent donc être gérées ailleurs |
| Formules et mise en forme | Seules les valeurs calculées survivent à l'exportation |
| Encodage déclaré | Rien dans le fichier n'indique son charset |
| Délimiteur déclaré | Les exports séparés par des points-virgules sont courants et toujours appelés CSV |
Aucun de ces points n'est un bug. C'est le prix à payer pour un format qui ne transporte aucune métadonnée. Tout ce que vous devez conserver doit être documenté en dehors du fichier lui-même.
Résumé des avantages clés
Si vous avez besoin d'une synthèse rapide, la voici.
Un fichier CSV est le moyen le plus portable, durable et diffusable en continu pour transférer des données tabulaires. Il y parvient en ne transportant rien d'autre que les valeurs.
Ce compromis en vaut la peine lorsque le système de réception est inconnu ou lointain. C'est un mauvais choix lorsque les types, les relations ou la mise en forme doivent survivre au transfert.
Son cousin séparé par des tabulations échange un problème contre un autre. Notre article complémentaire sur la maîtrise des fichiers TSV explique dans quels cas cet échange s'avère utile.
Travailler avec des fichiers CSV grâce à l'IA
L'écart entre « j'ai le fichier » et « j'ai la réponse » est ce qui prend le plus de temps. Cet écart est aujourd'hui largement automatisable.
Powerdrill Bloom prend directement en charge le fichier. Son offre gratuite permet de charger des fichiers Excel, CSV, PDF et des documents, tout en générant des analyses, des graphiques et des résumés.
Trois pages de fonctionnalités couvrent les tâches courantes. L'assistant IA pour CSV répond aux questions sur un fichier unique. Les outils IA pour CSV couvrent un ensemble plus large, et la fonctionnalité de fusion de fichiers CSV combine des exports reçus séparément. La page d'analyse TSV traite de la variante séparée par des tabulations.
Décrire la tâche en langage naturel évite les détours habituels. Vous n'avez pas à écrire un analyseur syntaxique ou à deviner un encodage, vous nommez simplement le résultat dont vous avez besoin.
Les abonnements sont disponibles sur la page des tarifs, et l'offre gratuite suffit pour tester cela sur un export réel. Pour essayer, commencez avec Powerdrill Bloom.
Foire aux questions
Existe-t-il une norme officielle pour le CSV ?
La RFC 4180 a enregistré le type de média text/csv et documenté les pratiques courantes. Elle indique clairement qu'aucune spécification formelle n'existait, il convient donc de la considérer comme une convention plutôt que comme une norme stricte.
Pourquoi mes zéros non significatifs disparaissent-ils ?
Le format ne contenant aucun type de données, un outil en aval décide qu'une valeur telle que 00123 est un nombre. L'entourer de guillemets n'empêche pas toujours cette interprétation.
Comment gérer les virgules à l'intérieur d'une valeur ?
Encadrez le champ de guillemets doubles, conformément à la règle 6. Si la valeur contient également un guillemet double, échappez-le en le doublant, conformément à la règle 7.
Les fichiers séparés par des points-virgules sont-ils toujours des fichiers CSV ?
Ils sont largement produits et couramment appelés CSV, mais la spécification décrit des virgules. Vérifiez le délimiteur avant d'importer plutôt que de faire des suppositions. Ouvrir les deux premières lignes dans un éditeur de texte prend quelques secondes et permet d'en avoir le cœur net.
CSV ou TSV : lequel dois-je exporter ?
Choisissez en fonction de vos données. Les tabulations sont plus rares que les virgules à l'intérieur des valeurs textuelles, ce qui limite l'usage des guillemets. Les tabulations sont également plus faciles à perdre lorsqu'un fichier est copié via un éditeur.