Ero sivun ”CSV” versioiden välillä
| (13 välissä olevaa versiota samalta käyttäjältä ei näytetä) | |||
| Rivi 18: | Rivi 18: | ||
=== Tiedoston rakenne ja erotinmerkit (DSV) === | === Tiedoston rakenne ja erotinmerkit (DSV) === | ||
CSV | Vaikka CSV-lyhenne viittaa pilkkuun, käytetty erotin voi vaihdella alueittain. Formaattiin viitataankin usein yleisemmin nimellä DSV (Delimiter-Separated Values). | ||
==== Datan tyyppi ==== | |||
CSV on pelkkä tekstitiedostomuoto. Se ei sisällä minkäänlaista metatietoa tai tietoa siitä, onko kentän arvo luku (kokonaisluku tai desimaaliluku), päivämäärä vai teksti. | |||
* Taulukkolaskenta- tai tietokantaohjelmien täytyy arvata datan tyyppi lukuprosessin aikana. Tämä voi aiheuttaa ongelmia jos esimerkiksi päivämäärät (12/01) tulkitaan amerikkalaisittain (1. joulukuuta) eurooppalaisen muodon sijaan (12. tammikuuta) ellei käyttäjä määritä tyyppiä itse tuonnin yhteydessä. | |||
* Nollat: Esimerkiksi tuotenumero, joka alkaa nollalla (00123), voi menettää etunollansa, jos ohjelma tulkitsee sen suoraan kokonaisluvuksi. | |||
Tämän vuoksi CSV-tiedostoja tuotaessa on kriittistä, että käyttäjä useimmissa ohjelmissa (kuten [[LibreOffice Calc]]) määrittelee itse, mikä datan tyyppi kuhunkin sarakkeeseen tuodaan, estääkseen virheelliset automaattiset muunnokset. | |||
==== Erotinmerkit ==== | ==== Erotinmerkit ==== | ||
CSV-standardin (RFC 4180) oletus on pilkku (,), mutta seuraavat erottimet ovat yleisiä: | CSV-standardin (RFC 4180) oletus on pilkku (,), mutta seuraavat erottimet ovat yleisiä: | ||
| | ||
* Pilkkua (,) käytetään ensisijaisesti angloamerikkalaisissa järjestelmissä. | * Pilkkua (,) käytetään ensisijaisesti angloamerikkalaisissa järjestelmissä (RFC 4180:n oletus). | ||
* Puolipistettä (;) käytetään laajalti Suomessa ja monissa | * Puolipistettä (;) käytetään laajalti Suomessa ja monissa Euroopan maissa. Tämä on välttämätöntä, kun desimaalierottimena käytetään pilkkua (esim. 4,916) sekaannuksen estämiseksi. | ||
==== Rivinvaihdo ==== | ==== Rivinvaihdo ==== | ||
| Rivi 36: | Rivi 42: | ||
==== Otsikkorivi ==== | ==== Otsikkorivi ==== | ||
Tiedoston ensimmäinen rivi sisältää useimmiten kenttien nimet eli otsikkorivin (Header Row). | Tiedoston ensimmäinen rivi sisältää useimmiten kenttien nimet eli otsikkorivin (Header Row). | ||
<syntaxhighlight lang="CSV"> | |||
Vuosi;Merkki;Malli;Pituus | |||
1994;Audi;A6;"4,916" | |||
2001;Honda;Civic;"4,545" | |||
</syntaxhighlight> | |||
| | ||
(Huomaa, että 4,916 on ympäröity lainausmerkeillä, koska se sisältää erottimen kaltaisen pilkun.) | |||
==== Lainausmerkit ja erikoismerkit ==== | ==== Lainausmerkit ja erikoismerkit ==== | ||
CSV-formaatti käyttää lainausmerkkejä merkkijonojen ja erikoismerkkien käsittelyyn. | CSV-formaatti käyttää lainausmerkkejä (") merkkijonojen ja erikoismerkkien käsittelyyn. | ||
===== Lainausmerkeillä ympäröinti ===== | |||
* Jos kentän arvo sisältää erotinmerkin, rivinvaihdon tai lainausmerkin, koko arvo on ympäröitävä lainausmerkeillä ("). | |||
===== Lainausmerkin Escapointi ===== | |||
* Jos lainausmerkeillä ympäröity arvo sisältää itsessään lainausmerkin, se on escapoitava eli esitettävä kahdella peräkkäisellä lainausmerkillä (""). | |||
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
| Rivi 52: | Rivi 65: | ||
! Arvo (sellaisenaan) !! CSV-muotoon kirjoitettuna !! Selitys | ! Arvo (sellaisenaan) !! CSV-muotoon kirjoitettuna !! Selitys | ||
|- | |- | ||
| Audi | | Audi "A6" || "Audi ""A6""" || Arvon sisällä oleva lainausmerkki (") muutetaan kahdeksi lainausmerkiksi (""). Koko arvo ympäröidään lainausmerkeillä. | ||
|- | |- | ||
| | | Raportti; "Kevät" || "Raportti; ""Kevät""" || Sisältää erottimen (;) ja lainausmerkin. Molempien sääntöjen on täytyttävä. | ||
|} | |} | ||
| Rivi 89: | Rivi 82: | ||
|+ | |+ | ||
|- | |- | ||
! Työkalu !! Kuvaus !! | ! Työkalu !! Kuvaus !! Erotin (:)-esimerkki | ||
|- | |- | ||
| ''[[awk]]'' || Yleinen tekstitiedoston prosessointikieli. Erinomainen rivien suodattamiseen ja muokkaamiseen. || -F ';' | | ''[[awk|GNU awk]]'' || Yleinen tekstitiedoston prosessointikieli. Erinomainen rivien suodattamiseen ja muokkaamiseen. || awk -F ';' '{ print $1 }' | ||
|- | |- | ||
| ''[[cut]]'' || Leikkaa sarakkeita tiedostosta. || -d ';' | | ''[[cut]]'' || Leikkaa sarakkeita tiedostosta. || cut -d ';' -f 2,4 | ||
|- | |- | ||
| ''[[csvkit]]'' || (Paketti) Kokoelma Pythonilla kirjoitettuja työkaluja (esim. ''csvcut'', ''csvstat''). Tarjoaa SQL-tyyppisiä toimintoja. || -d ';' | | ''[[csvkit]]'' || (Paketti) Kokoelma Pythonilla kirjoitettuja työkaluja (esim. ''csvcut'', ''csvstat''). Tarjoaa SQL-tyyppisiä toimintoja. || csvcut -d ';' -c Malli tiedosto.csv | ||
|- | |- | ||
| ''[[mlr]]'' (Miller) || | | ''[[mlr]]'' (Miller) || Tehokas työkalu, joka käsittelee CSV/TSV/JSON-muotoja ja ymmärtää sarakkeiden nimet. Korvaa monessa suhteessa ''[[awk]]'', ''[[cut]]'', ja ''[[sort]]''-komennot. || mlr --ifs ';' cut -f Vuosi,Malli tiedosto.csv | ||
|} | |} | ||
Nykyinen versio 10. marraskuuta 2025 kello 17.06
| CSV (.csv) | |
|---|---|
| Tiedostopääte | .csv |
| Mediatyyppi | text/csv |
| Lisenssi | RFC 4180, Avoin standardi |
CSV (Comma-Separated Values) on yksinkertainen, vakiomuotoinen tekstitiedostoformaatti, jolla tallennetaan taulukkomuotoista tietoa. CSV-tiedosto koostuu riveistä ja kukin rivi edustaa yhtä tietoriviä. Rivin sisällä olevat kentät (sarakkeet) erotetaan toisistaan erotinmerkillä. Valmiita CSV-tiedostoja voidaan tuoda lähes kaikkiin taulukkolaskenta-, tietokanta- ja ohjelmointiohjelmistoihin.
Tiedoston rakenne ja erotinmerkit (DSV)
[muokkaa]Vaikka CSV-lyhenne viittaa pilkkuun, käytetty erotin voi vaihdella alueittain. Formaattiin viitataankin usein yleisemmin nimellä DSV (Delimiter-Separated Values).
Datan tyyppi
[muokkaa]CSV on pelkkä tekstitiedostomuoto. Se ei sisällä minkäänlaista metatietoa tai tietoa siitä, onko kentän arvo luku (kokonaisluku tai desimaaliluku), päivämäärä vai teksti.
- Taulukkolaskenta- tai tietokantaohjelmien täytyy arvata datan tyyppi lukuprosessin aikana. Tämä voi aiheuttaa ongelmia jos esimerkiksi päivämäärät (12/01) tulkitaan amerikkalaisittain (1. joulukuuta) eurooppalaisen muodon sijaan (12. tammikuuta) ellei käyttäjä määritä tyyppiä itse tuonnin yhteydessä.
- Nollat: Esimerkiksi tuotenumero, joka alkaa nollalla (00123), voi menettää etunollansa, jos ohjelma tulkitsee sen suoraan kokonaisluvuksi.
Tämän vuoksi CSV-tiedostoja tuotaessa on kriittistä, että käyttäjä useimmissa ohjelmissa (kuten LibreOffice Calc) määrittelee itse, mikä datan tyyppi kuhunkin sarakkeeseen tuodaan, estääkseen virheelliset automaattiset muunnokset.
Erotinmerkit
[muokkaa]CSV-standardin (RFC 4180) oletus on pilkku (,), mutta seuraavat erottimet ovat yleisiä:
- Pilkkua (,) käytetään ensisijaisesti angloamerikkalaisissa järjestelmissä (RFC 4180:n oletus).
- Puolipistettä (;) käytetään laajalti Suomessa ja monissa Euroopan maissa. Tämä on välttämätöntä, kun desimaalierottimena käytetään pilkkua (esim. 4,916) sekaannuksen estämiseksi.
Rivinvaihdo
[muokkaa]Rivinvaihdon merkintä vaikuttaa tiedoston yhteensopivuuteen eri käyttöjärjestelmissä:
- CRLF (Carriage Return + Line Feed): Yleisin Windows-järjestelmissä ja RFC 4180 -standardin suosittelema.
- LF (Line Feed): Yleisin Unix- ja Linux-järjestelmissä.
Otsikkorivi
[muokkaa]Tiedoston ensimmäinen rivi sisältää useimmiten kenttien nimet eli otsikkorivin (Header Row).
Vuosi;Merkki;Malli;Pituus
1994;Audi;A6;"4,916"
2001;Honda;Civic;"4,545" (Huomaa, että 4,916 on ympäröity lainausmerkeillä, koska se sisältää erottimen kaltaisen pilkun.)
Lainausmerkit ja erikoismerkit
[muokkaa]CSV-formaatti käyttää lainausmerkkejä (") merkkijonojen ja erikoismerkkien käsittelyyn.
Lainausmerkeillä ympäröinti
[muokkaa]- Jos kentän arvo sisältää erotinmerkin, rivinvaihdon tai lainausmerkin, koko arvo on ympäröitävä lainausmerkeillä (").
Lainausmerkin Escapointi
[muokkaa]- Jos lainausmerkeillä ympäröity arvo sisältää itsessään lainausmerkin, se on escapoitava eli esitettävä kahdella peräkkäisellä lainausmerkillä ("").
| Arvo (sellaisenaan) | CSV-muotoon kirjoitettuna | Selitys |
|---|---|---|
| Audi "A6" | "Audi ""A6""" | Arvon sisällä oleva lainausmerkki (") muutetaan kahdeksi lainausmerkiksi (""). Koko arvo ympäröidään lainausmerkeillä. |
| Raportti; "Kevät" | "Raportti; ""Kevät""" | Sisältää erottimen (;) ja lainausmerkin. Molempien sääntöjen on täytyttävä. |
CSV-työkalut Linuxissa
[muokkaa]Linuxissa taulukkomuotoisen datan käsittelyyn soveltuvat perinteiset komentorivityökalut sekä erikoistuneet paketit.
Graafinen käyttöliittymä
[muokkaa]- LibreOffice Calc: Tarjoaa erinomaisen tuen kaikille erotinmerkeille. Se kysyy erottimen aina tiedostoa avattaessa ja mahdollistaa puolipisteen valinnan myös tiedostoa vietäessä (Tallenna nimellä... -> Text CSV).
Komentorivityökalut
[muokkaa]Perinteiset työkalut ovat joustavia, kun taas modernit paketit ymmärtävät taulukkorakenteen paremmin.
| Työkalu | Kuvaus | Erotin (:)-esimerkki |
|---|---|---|
| GNU awk | Yleinen tekstitiedoston prosessointikieli. Erinomainen rivien suodattamiseen ja muokkaamiseen. | awk -F ';' '{ print $1 }' |
| cut | Leikkaa sarakkeita tiedostosta. | cut -d ';' -f 2,4 |
| csvkit | (Paketti) Kokoelma Pythonilla kirjoitettuja työkaluja (esim. csvcut, csvstat). Tarjoaa SQL-tyyppisiä toimintoja. | csvcut -d ';' -c Malli tiedosto.csv |
| mlr (Miller) | Tehokas työkalu, joka käsittelee CSV/TSV/JSON-muotoja ja ymmärtää sarakkeiden nimet. Korvaa monessa suhteessa awk, cut, ja sort-komennot. | mlr --ifs ';' cut -f Vuosi,Malli tiedosto.csv |
Ohjelmat jotka avaavat ja luovat .csv-tiedostoja
[muokkaa]- LibreOffice Calc
- Tekstieditorit
- awk, soveltuu hyvin myös CSV- ja TSV-tiedostojen prosessointiin.
Katso myös
[muokkaa]| Asiakirjamuodot | |
| Tekstiasiakirjamuodot | .ODT | .FODT | .PDF | .DOC | .DOCX | .TXT |
| Tekstiasiakirjamallit | .OTT |
| Taulukkolaskentamuodot | .ODS | .OTS | .FODS | .XLS | .XLSX | .CSV | .TSV |
| Taulukkolaskentamallit | .OTS |
| Esitysgrafiikka | .ODP | .FODP | .PPTX | .SXI |
| Tietokanta | .ODB |
| Vektorigrafiikka | .ODG | .FODG |
| Kaavamuokkain | .ODF |
| HTML-muokkain | .HTML |