Ero sivun ”CSV” versioiden välillä
Siirry navigaatioon
Siirry hakuun
p →Ohjelmat jotka avaavat ja luovat .csv-tiedostoja: Tarkennettu ja lisätty awk esimerkiksi. |
|||
| (26 välissä olevaa versiota samalta käyttäjältä ei näytetä) | |||
| Rivi 15: | Rivi 15: | ||
| avoinkoodi = | | avoinkoodi = | ||
}} | }} | ||
'''CSV''' ''( | '''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) === | |||
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 ==== | |||
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 ==== | |||
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 ==== | |||
Tiedoston ensimmäinen rivi sisältää useimmiten kenttien nimet eli otsikkorivin (Header Row). | |||
<syntaxhighlight lang="CSV"> | <syntaxhighlight lang="CSV"> | ||
Vuosi | Vuosi;Merkki;Malli;Pituus | ||
1994 | 1994;Audi;A6;"4,916" | ||
2001 | 2001;Honda;Civic;"4,545" | ||
</syntaxhighlight> | |||
</syntaxhighlight> | | ||
(Huomaa, että 4,916 on ympäröity lainausmerkeillä, koska se sisältää erottimen kaltaisen pilkun.) | |||
==== Lainausmerkit ja erikoismerkit ==== | |||
{|class=" | 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" | |||
|+ | |||
|- | |||
! 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 | ||