Ero sivun ”CSV” versioiden välillä
Siirry navigaatioon
Siirry hakuun
| (6 välissä olevaa versiota samalta käyttäjältä ei näytetä) | |||
| Rivi 19: | Rivi 19: | ||
=== Tiedoston rakenne ja erotinmerkit (DSV) === | === 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). | 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 ==== | ||
| Rivi 57: | 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 74: | 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 | ||
|} | |} | ||