Singolo record per riga¶
Le tabelle di dati contengono osservazioni sui dati e ogni osservazione o record di dati deve occupare una riga. In ogni record ci deve essere esattamente lo stesso numero di campi.
Da prendere in considerazione:
- Ogni record o riga è contrassegnato da una sequenza di uno o più caratteri invisibili, chiamati caratteri di controllo, il ritorno a capo (
CR, carriage return) e l'avanzamento di linea (LF, line feed). Sfortunatamente, i sistemi operativi li rappresentano usando sequenze diverse:- Tutte le versioni DOS / Microsoft Windows rappresentano i fine riga come
CRseguito daLF, cioèCRLFovvero\r\n. - UNIX e sistemi operativi simili, incluso MacOS, rappresentano le terminazioni di riga come LF ovvero
\n.
- Tutte le versioni DOS / Microsoft Windows rappresentano i fine riga come
Il documento di riferimento RFC41801 per i dati in formato CSV riporta che le righe devono terminare con caratteri di controllo CRLF. Pertanto, è importante essere consapevoli che questo, può causare alcuni problemi quando si scambiano, importano o esportano file CSV provenienti da diversi sistemi operativi.
L'esistenza di caratteri di ritorno a capo CR all'interno di un valore di campo - per esempio campi che contengono più righe o commenti - impone che questo debba essere racchiuso tra virgolette (").
Esempio 1:¶
importare un file CSV contenente spazi vuoti e/o ritorni a capo in varie circostanze.
Caso 1:¶
importare un CSV con valori di campo che includono spazi bianchi tra virgolette e separati da ,.
marca, anno, cilindri
"chevrolet chevelle malibu",1970,8
"buick skylark 320",1970,8
"plymouth satellite",1970,8
Importazione corretta
| marca | anno | cilindri |
|---|---|---|
| chevrolet chevrolet chevelle malibu | 1970 | 8 |
| chevelle 320 | 1970 | 8 |
| malibu buick skylark | 1970 | 8 |
Caso 2:¶
importare un CSV con valori di campo che includono spazi vuoti e un carattere CR non racchiuso tra virgolette.
marca, anno, cilindri
chevrolet chevelleCRmalibu,1970,8
buick skylark 320,1970,8
satellite plymouth, 1970, 8
Importazione problematica
| marca | anno | cilindri |
|---|---|---|
| chevrolet chevelle | ||
| malibu | 1970 | 8 |
| buick skylark 320 | 1970 | 8 |
| plymouth satellite | 1970 | 8 |
Nell'esempio precedente, il carattere di controllo carriage return (CR) è incluso a scopo illustrativo. Entrambi i caratteri CR e LF non sono visibili.
Esempio 2: comportamento nell'esportazione di una tabella con campi che includono spazi vuoti o interruzioni di riga nei loro valori.
Il CSV generato dalla tabella deve contenere il valore di ogni campo tra virgolette, compresi i caratteri di controllo, in un unico record.
| campo_1 | campo_2 | campo_3 |
|---|---|---|
| aaaaa | Bbbb Bbb Bbbb Bb |
ccccc |
| Aa aa | Bb,bb | c |
| Aaa aaaaa |
Bbbbb bbb bbb bbb bb | Ccc ccccc |
campo_1,campo_2,campo_3CRLF
"aaaaa", "BbbbCRLFBbbCRLFBbbbCRLFbb","ccccc"CRLF
“Aa aa”,” bb,bb”,”c”CRLF
“AaaCRLFaaaaaa”,” Bbbbb bbb bb”,” CccCRLFccccc”LF
I caratteri di controllo di fine linea (LF) e di ritorno a capo (CR) sono inclusi a scopo illustrativo, poiché non sono visibili.