Fichier de données CSV Lignes directrices techniques
Table des matières
- Structure de fichier de données CSV
- Qualité des données CSV
- Conversion de fichiers au format UTF-8 au moyen de Bloc-notes
- Outils de validation
- Erreurs courantes
Introduction
La présente spécification vise à établir la syntaxe et la sémantique des fichiers de données CSV (valeurs séparées par des virgules). Un fichier CSV contient des données tabulaires (chiffres et texte) en texte brut. Chaque ligne du fichier est un enregistrement ou une ligne de données et chaque enregistrement ou ligne est constitué d’un ou plusieurs champs, séparés par des virgules.
Structure de fichier de données CSV
Un fichier de données CSV doit être exempt d’erreurs et satisfaire à la spécification Common Format and MIME Type for Comma-Separated Values (CSV) Files (RFC-4180) (en anglais).
Ligne d’en-têtes
La première ligne du fichier CSV doit être une ligne d’en-têtes, soit les en-têtes uniques des colonnes de données. Les en-têtes de colonne doivent être définis dans le fichier de dictionnaire des données associé au jeu de données.
Dans l’exemple ci-dessous, les valeurs de la ligne 1, field_name1
, field_name2
et field_name3
sont les en-têtes de colonne.
field_name1,field_name2,field_name3
aaa,bbb,ccc
ddd,eee,fff
zzz,yyy,xxx
Encodage de caractères UTF-8
Tous les fichiers de données CSV doivent utiliser l’encodage de caractères UTF-8. Les caractères spéciaux (caractères accentués, etc.) sont alors lus correctement. Le fichier de données doit inclure une BOM pour préciser le type d’encodage. La BOM doit apparaître au début du fichier et est composée de la séquence d’octets 0xEF,0xBB,0xBF
.
Si la BOM n’est pas dans le fichier, certains programmes (Excel, produits Microsoft) pourraient afficher les caractères accentués incorrectement.
Les instructions pour convertir un fichier de données au format UTF-8 et ajouter la BOM (au moyen du Bloc-notes) se trouvent plus loin dans la section.
Qualité des données CSV
Un fichier de données doit satisfaire aux exigences suivantes en matière de qualité des données.
Nombre de champs uniforme
Toutes les lignes du fichier CSV doivent contenir le même nombre de champs.
Dans l’exemple ci-dessous d’un fichier CSV invalide, la troisième ligne ne comporte pas trois champs.
field_name1,field_name2,field_name3
aaa,bbb,ccc
ddd,eee,fff,ggg
zzz,yyy,xxx
Lignes vides
Chaque ligne doit comporter des données. Certains champs d’une ligne peuvent être vides, mais pas tous.
Dans l’exemple ci-dessous d’un fichier CSV invalide, la troisième ligne est vide.
field_name1,field_name2,field_name3
aaa,bbb,ccc
,,
ddd,,fff
,yyy,xxx
En-têtes dupliqués
La première rangée du fichier CSV est la ligne d’en-têtes, soit les en-têtes des colonnes de données. Les valeurs des en-têtes doivent être uniques et ne peuvent pas être dupliquées.
Dans l’exemple de fichier CSV invalide ci-dessous, field_name1
apparaît à deux reprises dans la ligne d’en-têtes.
field_name1,field_name2,field_name3,field_name1
aaa,bbb,ccc,ddd
ddd,eee,fff,ggg
zzz,yyy,xxx,www
Lignes dupliquées
La même ligne de données ne doit pas être dupliquée dans le fichier CSV. Les valeurs individuelles peuvent apparaître sur plusieurs lignes, mais une ligne entière ne peut pas être dupliquée.
Dans l’exemple ci-dessous d’un fichier CSV invalide, les lignes 3 et 5 sont identiques.
field_name1,field_name2,field_name3
aaa,bbb,ccc
ddd,eee,fff
zzz,yyy,xxx
ddd,eee,fff
aaa,yyy,zzz
Colonnes dupliquées
La même colonne de données ne doit pas être dupliquée dans le fichier CSV. Exceptions : colonnes de valeurs vides (aucun contenu dans la colonne) ou colonnes de valeurs zéro (la valeur est 0 pour tous les champs de la colonne). Les valeurs individuelles peuvent apparaître dans plusieurs colonnes, mais une colonne entière ne peut pas être dupliquée.
Dans l’exemple ci-dessous d’un fichier CSV invalide, les colonnes 2 et 3 sont dupliquées (sauf pour les en-têtes).
field_name1,field_name2,field_name3
aaa,bbb,ccc
ddd,bbb,ccc
zzz,bbb,ccc
ggg,bbb,ccc
Dans l’exemple ci-dessous d’un fichier CSV valide, les colonnes 2 et 3 ne sont pas dupliquées puisqu’elles sont vides.
field_name1,field_name2,field_name3,field_name4
aaa,,,123
ddd,,,456
zzz,,,789
ggg,,,100
Dans l’exemple ci-dessous d’un fichier CSV valide, les colonnes 2 et 3 ne sont pas dupliquées puisqu’elles contiennent la valeur 0 (zéro).
field_name1,field_name2,field_name3,field_name4
aaa,0,0,123
ddd,0,0,456
zzz,0,0,789
ggg,0,0,100
Modèles de données
Si un élément data pattern est précisé dans le dictionnaire de données pour une colonne en particulier, les éléments de données de la colonne doivent être conformes au modèle. Si aucun élément data pattern n’est précisé, n’importe quel contenu peut apparaître dans la colonne.
Dans l’exemple ci-dessous d’un fichier CSV invalide, le dictionnaire de données précise que le contenu de la colonne 2 (field_name2) doit seulement inclure des chiffres. La valeur de la colonne 2 (field_name2
), ligne 3, ne contient pas seulement des chiffres.
field_name1,field_name2,field_name3
aaa,123,ccc
ddd,EEE,fff
zzz,777,xxx
Conditions des données
Si un élément data condition est précisé dans le dictionnaire de données pour une colonne en particulier, les éléments de données de la colonne doivent être conformes à la condition. Les conditions des données sont précisées au moyen du langage de schéma CSV (version 1.1.) (en anglais).
Dans l’exemple ci-dessous d’un fichier CSV invalide, le dictionnaire de données précise que la condition des données de la colonne 1 (field_name1) est que les valeurs doivent être uniques. Les valeurs de la colonne 1 (field_name1
), lignes 2 et 5, sont identiques et donc ne sont pas uniques.
field_name1,field_name2,field_name3
aaa,bbb,ccc
ddd,eee,fff
zzz,yyy,xxx
aaa,ggg,FFF
Première ligne dans un champ de texte multiligne
Si un champ contient de multiples lignes de texte (p. ex., un paragraphe), la première ligne de texte ne doit pas être vierge. Certains tableurs (p. ex., Microsoft Excel) pourraient afficher seulement la première ligne d’une cellule multiligne. Si cette première ligne est vierge, il est possible que rien ne s’affiche. Cela pourrait porter l’utilisateur à croire que le champ est vide.
Dans l’exemple suivant d’un fichier CSV invalide, la troisième rangée contient un champ de texte multiligne (champ no 3) entre guillemets. La première ligne du champ est vierge :
field_name1,field_name2,field_name3
aaa,bbb,ccc
ddd,eee,”
fff”
zzz,yyy,xxx
Contenu accessible dans un champ de texte multiligne
Si un champ contient de multiples lignes de texte (p. ex., en têtes, paragraphes et listes), le texte doit se conformer aux techniques de rédaction en langage clair (en anglais) pour les paragraphes, les listes et les en têtes des règles pour l’accessibilité des contenus Web (WCAG) 2.0. Les techniques suivantes s’appliquent.
T1 : En utilisant des conventions de formatage de texte courantes pour les paragraphes
Cette technique définit comment les paragraphes sont formatés et comment ils sont séparés du reste du contenu (p. ex., en têtes, autres paragraphes).
- Un nouveau paragraphe commence si :
- il s’agit du premier contenu dans le champ;
- il est séparé du contenu précédent (en tête, paragraphe, liste) par au moins une ligne vierge.
- Un paragraphe se termine si :
- il s’agit de la fin du champ;
- il est suivi d’une ou de plusieurs lignes vierges.
- Si le champ commence par un paragraphe, le paragraphe commence au début du champ, il ne doit y avoir aucune ligne vide avant.
Des renseignements supplémentaires sur cette technique peuvent être consultés sur la page Web suivante : T1: Using standard text formatting conventions for paragraphs (en anglais).
T2 : En utilisant des conventions de formatage de texte courantes pour les listes
Cette technique définit comment les listes et les éléments de liste sont formatés.
- Dans une liste non ordonnée, chacun des articles de la liste est :
- Précédé d’une séquence de caractères pour l’élément de liste. Cette séquence peut soit être un trait d’union ou un astérisque, suivi d’une espace ou d’un retrait. L’interlignage (espace ou mise en retrait) est permis.
- Tous les éléments d’une liste doivent utiliser la même séquence de caractères.
- Formaté comme des paragraphes et suivis d’une ligne vierge unique.
- Dans une liste ordonnée, chacun des éléments de la liste est :
- Précédé par une séquence de caractères d’éléments de liste. Cette séquence peut soit être une lettre, un nombre arabe ou un nombre romain, suivi d’un point ou d’une parenthèse de fermeture. Débuter par un espace (espace ou mise en retrait) est permis.
- Tous les éléments d’une liste doivent utiliser la même séquence de caractères et la lettre, le nombre arabe ou le nombre romain doit augmenter d’une unité.
- Formaté comme des paragraphes et suivis d’une ligne vierge unique.
- Si la liste contient un seul élément, aucun préfixe n’est utilisé (c. à d. pas de trait d’union, symbole ou chiffre).
Des renseignements supplémentaires sur cette technique peuvent être consultés sur la page Web suivante T2: Using standard text formatting conventions for lists (en anglais).
T3 : En utilisant des conventions de formatage de texte courantes pour les en têtes
Cette technique définit comment les en têtes sont formatés et comment ils sont séparés du reste du contenu (p. ex. paragraphes).
- Un nouvel en tête commence si :
- il s’agit du premier contenu du champ et est suivi d’une ligne vierge;
- il est séparé du contenu précédent (paragraphe ou liste) par deux lignes vierges.
- Un en tête contient exactement une ligne de texte.
- Un en tête est suivi d’une ligne vierge avant le reste du contenu (paragraphe ou liste).
- Si un en tête apparaît au début d’un champ, il ne doit pas être précédé de lignes vierges.
Des renseignements supplémentaires sur cette technique peuvent être consultés sur la page Web suivante T3: Using standard text formatting conventions for headings (en anglais).
Conversion de fichiers au format UTF-8 au moyen de Bloc-notes
Voici les étapes à suivre pour convertir un fichier de données CSV au format d’encodage UTF-8 et pour ajouter la BOM au moyen de Bloc-notes sous Windows.
- Étape 1 : Cliquez avec le bouton droit de la souris sur le fichier CSV, puis sélectionnez l'option « Ouvrir avec » > Bloc-notes.
- Étape 2 : Cliquez sur Fichier> Enregistrer sous :
- Étape 3 : Cliquez sur le menu déroulant « Encodage », puis sélectionnez « UTF-8 » :
- Étape 4 : Enregistrez le fichier CSV, ceci va aussi rajouter le BOM automatiquement au tout début du fichier.
Le fichier CSV est maintenant codé correctement :
Outils de validation
Voici une liste d’outils pouvant être utiles pour valider des fichiers de données CSV.
- Outil de données ouvertes TPSGC - Web and Open Data Validator
- CSV Lint (en anglais)
Erreurs courantes
Voici une liste des erreurs courantes dans les fichiers de données CSV.
Fin de ligne incorrecte
Toutes les lignes d’un fichier CSV doivent se terminer par la combinaison de caractères retour chariot/saut de ligne. Plusieurs tableurs (Microsoft Excel, etc.) peuvent lire et écrire des fichiers CSV qui ont seulement le caractère saut de ligne comme fin de ligne.
Les valeurs de données contiennent de la présentation ou du formatage
Les valeurs de données d’un fichier CSV ne doivent pas inclure de présentation ou de formatage inutile, seulement les données brutes. Voici des exemples de présentation ou de formatage inutile.
- Symbole de devise dans les valeurs de montants d’argent; « 100 $ » versus « 100 ».
- Formatage de chiffres propre à une langue; 1.00 versus 1,00.
- Date de modification :