Ero sivun ”CSV” versioiden välillä
Siirry navigaatioon
Siirry hakuun
| (23 välissä olevaa versiota samalta käyttäjältä ei näytetä) | |||
| Rivi 15: | Rivi 15: | ||
| avoinkoodi = | | avoinkoodi = | ||
}} | }} | ||
'''CSV''' ''(Comma-Separated Values)'' on yksinkertainen, vakiomuotoinen tekstitiedostoformaatti, jolla tallennetaan taulukkomuotoista tietoa. CSV-tiedosto koostuu riveistä | '''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 [[ohjelmistokehitys|ohjelmointiohjelmistoihin]]. | ||
===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). | ||
===Erotinmerkit=== | ==== 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 ==== | |||
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 ==== | ||
Rivinvaihdon merkintä vaikuttaa tiedoston yhteensopivuuteen eri käyttöjärjestelmissä: | Rivinvaihdon merkintä vaikuttaa tiedoston yhteensopivuuteen eri käyttöjärjestelmissä: | ||
* CRLF (Carriage Return + Line Feed): Yleisin Windows-järjestelmissä ja RFC 4180 -standardin suosittelema. | | ||
* CRLF (Carriage Return + Line Feed): Yleisin Windows-järjestelmissä ja RFC 4180 -standardin suosittelema. | |||
* LF (Line Feed): Yleisin Unix- ja Linux-järjestelmissä. | |||
===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> | |||
| | ||
===Lainausmerkit ja erikoismerkit=== | (Huomaa, että 4,916 on ympäröity lainausmerkeillä, koska se sisältää erottimen kaltaisen pilkun.) | ||
CSV-formaatti käyttää lainausmerkkejä merkkijonojen ja erikoismerkkien käsittelyyn. | |||
==== Lainausmerkit ja erikoismerkit ==== | |||
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" | |||
|+ | |||
|- | |||
! 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 == | |||
Linuxissa taulukkomuotoisen datan käsittelyyn soveltuvat perinteiset komentorivityökalut sekä erikoistuneet paketit. | |||
=== Graafinen käyttöliittymä === | |||
* 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 === | |||
Perinteiset työkalut ovat joustavia, kun taas modernit paketit ymmärtävät taulukkorakenteen paremmin. | |||
{| class="wikitable" | |||
{|class=" | |+ | ||
|- | |||
! Työkalu !! Kuvaus !! Erotin (:)-esimerkki | |||
|- | |- | ||
| | | ''[[awk|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== | == Ohjelmat jotka avaavat ja luovat .csv-tiedostoja == | ||
* [[LibreOffice Calc]] | * [[LibreOffice Calc]] | ||
* [[Tekstieditori]]t | * [[Tekstieditori]]t | ||