CSV DSV TSV SYLK, la jungle des formats d'exports!
par
, 27/05/2016 à 22h30 (1799 Affichages)
Interrogation des étudiants en licence SIO: Le format CSV comment le mettre en forme?
On est ici dans la jungle des formats d'export dit de fichiers à plats...
nb : une information sur les caractères ASCII ici => http://cyberzoide.developpez.com/info/turbo/chap13.php3 celà peut servir.
Quand peut on parler de format CSV (Comma Separated Values)
Ce format qui est très utilisé dans les échanges de données, se base sur le RFC (Request for comments) 4180 [https://tools.ietf.org/rfc/rfc4180.txt] qui n'est "qu'informatif" et non "normatif", toute la problématique vient de là.
Que nous dit ce RFC, simplement que le format CSV doit être construit de la manière suivante :
- Chaque éléments d'un enregistrement doivent être séparés par une virgule , ASCII 44 en valeur décimale ou 0x2C en valeur hexadécimale.
- Chaque enregistrements d'éléments doivent être séparés par un CRLF (Carriage Return / Line feed) ASCII décimal 13/10 Héxa 0x0D/0x0A
- Chaque enregistrements d'éléments doivent comporter le même nombre de colonnes.
- La dernière ligne peut avoir un retour chariot, ou éventuellement ne pas en avoir.
- Chaque élément peut être encadré par des "doubles quotes" ASCII (Décimal 34 ou Hexa. 0x22), ceci n'est pas obligatoire.
- Si le contenu d'un élément comporte un caractère "double quotes", le caractère "double quotes" doit être doublé.
- Si le contenu d'un élément doit comporter une information multi-lignes séparé par les caractères CRLF, alors cet élément doit se trouver entre "doubles quotes".
- Un espace est considéré comme un élément, l'absence de caractère également.
- Les enregistrements peuvent posséder un entête (optionnel), qui doit comporter autant de nom de colonnes que le nombre d'éléments dans les enregistrements.
- Que l'on peut mettre le mot clé "Header" en entête (première ligne) pour indiquer que le fichier possède une entête!
Exemple de fichier CSV dans les règles de l'art (nb: je matérialise les retours chariots par CRLF)
Header
"NOM","PRENOM","DDN","SEXE" CRLF
"Cover","Harry","12/01/1998","M" CRLF
"In Black","Men",,"M" CRLF
"Aude "O2"","DIT","23/05/2015","F" CRLF
"Test Nom CRLF
sur plusieurs CRLR
lignes","Prenom",,"M" CRLF
Et si on n'utilise pas le format CSV de manière respectueuse ?
Alors vous utilisez le format DSV (Delimited Separated Values)!
Ce format permet en étant plus permissif, d'utiliser à la place de la ',' le caractère ';' caractère ASCII 0x3B Hexa ou 59 décimal.
Hormis les règles équivalentes ci dessus, on trouvera des variantes qui permettrons d’utiliser à la place de la , (virgule) le ; (point virgule), le dièse # ou le caractère "pipe" |, on trouve également le (deux points) :, &, ^,%,$, etc...
Exemple de format DSV :
Header
"NOM","PRENOM","DDN","SEXE" CRLF
"Cover","Harry","12/01/1998","M" CRLF
"In Black","Men",,"M" CRLF
"Aude "O2"","DIT","23/05/2015","F" CRLF
"Test Nom CRLF
sur plusieurs CRLR
lignes","Prenom",,"M" CRLF
Justement parlons en de ce caractère pipe (|) dans les fichiers à plat qui respectent la norme HL7 (Health Level 7) si on peut parler de norme ici.
Dans le format HL7, on utilise allégrement les caractères |^~& qui se font appelés séparateurs de champs.
Exemple de format de fichier HL7 ADT A01 (Admission):
Mais du format hl7 normatif (warff!!) on en reparlera!!!Envoyé par Exemple de fichier au format HL7
Et TSV (Tab Searated Values), et bien idem au format CSV, mais à la place d'utiliser des ',' on utilise des caractères tabulations, soit le caractère ASCII 9 en décimal ou 0x09 en Hexadécimal, rien de neuf sous le soleil, sauf qu'ici on va utiliser un caractère non imprimable comme dirait l'autre!.Envoyé par Note
Reste a parler du format SYLK (SYmbolic LinK) (Microsoft oblige!)
celui ci n'étant pas un format ouvert, on ne sait que très peu de chose sur lui.
Il y a bien des liens qui en parlent comme :
https://fr.wikipedia.org/wiki/Symbolic_Link
https://en.wikipedia.org/wiki/SYmbolic_LinK_%28SYLK%29
http://netghost.narod.ru/gff/graphic...ry/micsylk.htm
Tous ce que je peut en dire, c'est que Microsoft préfère ce format d'export qui prend en charge également l’intégration des formules mathématiques d'Excel en import/export, ce que ne permet pas le format CSV.