Fichier CSV

DéfinitionFichier CSV

CSV[1] est un format informatique permettant de stocker des données tabulaires dans un fichier texte.

Chaque ligne du fichier correspond à une ligne du tableau. Les valeurs de chaque colonne du tableau sont séparées par un caractère de séparation, en général une virgule ou un point-virgule. Chaque ligne est terminée par un caractère de fin de ligne (line break).

Toutes les lignes contiennent obligatoirement le même nombre de valeurs (donc le même nombre de caractères de séparation). Les valeurs vides doivent être exprimées par deux caractères de séparation contigus.

La taille du tableau est le nombre de lignes multiplié par le nombre de valeurs dans une ligne.

La première ligne du fichier peut être utilisée pour exprimer le nom des colonnes.

Syntaxe

1
[NomColonne1;NomColonne2;...;NomColonneN]
2
ValeurColonne1;ValeurColonne2;...;ValeurColonneN
3
ValeurColonne1;ValeurColonne2;...;ValeurColonneN
4
...

ExempleFichier CSV sans entête

1
Pierre;Dupont;20;UTC;NF17
2
Pierre;Dupont;20;UTC;NF26
3
Paul;Durand;21;UTC;NF17
4
Jacques;Dumoulin;21;UTC;NF29

ExempleFichier CSV avec entête

1
Prenom;Nom;Age;Ecole;UV
2
Pierre;Dupont;20;UTC;NF17
3
Pierre;Dupont;20;UTC;NF26
4
Paul;Durand;21;UTC;NF17
5
Jacques;Dumoulin;21;UTC;NF29

ExempleValeur nulle

1
Jacques;Dumoulin;;UTC;NF29

L'âge est inconnu (NULL).

AttentionVariations...

La syntaxe des fichiers CSV n'est pas complètement standardisée, aussi des variations peuvent exister :

  • Les chaînes de caractères peuvent être protégées par des guillemets (les guillemets s'expriment alors avec un double guillemet).

  • Le caractère de séparation des nombres décimaux peut être le point ou la virgule (si c'est la virgule, le caractère de séparation doit être différent)

  • ...

Un des problème les plus importants reste l'encodage des caractères qui n'est pas spécifié dans le fichier et peut donc être source de problèmes, lors de changement d'OS[2] typiquement.

MéthodeUsage en base de données

Les fichiers CSV sont très utilisés en BD[3] pour échanger les données d'une table (export/import).

Les SGBD[4] contiennent généralement des utilitaires permettant d'exporter une table ou un résultat de requête sous la forme d'un fichier CSV, en spécifiant un certain nombre de paramètres (caractère de séparation de valeur, caractère de fin de ligne, présence ou non d'une ligne de définition des noms des colonnes, etc.). De même ils proposent des utilitaires permettant d'importer un fichier CSV dans une table (en spécifiant les mêmes paramètres), voire de créer directement une table à partir du fichier CSV (quand les noms des colonnes sont présents).

ComplémentFichiers à largeur de colonne fixe

Les fichiers à largeur de colonne fixe n'utilisent pas de séparateur de colonne, mais imposent le même nombre de caractères pour chaque cellule. L'avantage est de ne pas avoir à spécifier le caractère de séparation, l'inconvénient est la taille de fichier supérieure si les valeurs ne font pas toutes la même largeur.

ComplémentXML

Les fichiers XML[5] tendent de plus en plus à remplacer les fichiers CSV car ils permettent d'être beaucoup plus expressifs sur le schéma d'origine. Ils sont également plus standards (encodage spécifié, principe de séparation des données par les tags, etc.). Leur seul inconvénient est d'être plus verbeux et donc plus volumineux.

ComplémentTables externes

Certains SGBD, comme Oracle, permettent de créer des tables dites externes, qui autorisent de créer un schéma de table directement sur un fichier CSV, permettant ainsi un accès SQL standard à un fichier CSV, sans nécessité de l'importer d'abord dans une table.