====== CSV ====== **CSV** (z anglického **Comma-Separated Values**, česky **hodnoty oddělené čárkami**) je jednoduchý textový formát pro ukládání tabulkových dat, jako jsou čísla, text nebo datumy. Každý řádek souboru představuje **jeden záznam**, zatímco jednotlivé **hodnoty ve sloupcích** jsou odděleny **oddělovačem** (nejčastěji čárkou). CSV je široce podporován tabulkovými procesory (např. Microsoft Excel, LibreOffice Calc), databázemi, programovacími jazyky (Python, JavaScript, PHP) a analytickými nástroji. ===== Struktura souboru CSV ===== Základní princip: * Každý **řádek** = jeden **záznam** (řádek tabulky). * Každá **hodnota** ve sloupci je oddělena **znakem oddělovače**. * První řádek často obsahuje **názvy sloupců** (tzv. hlavička, header). Příklad souboru **zamestnanci.csv**: jmeno,prijmeni,vek,oddeleni Jan,Novák,32,IT Eva,Svobodová,28,Marketing Petr,Dvořák,45,Finance ===== Oddělovače ===== Přestože název „CSV“ znamená „oddělené čárkami“, v praxi se mohou používat i jiné znaky, zejména kvůli **lokalizaci** (např. v češtině se desetinná čísla zapisují s čárkou, nikoli tečkou): * **Čárka (`,`)** – standard v anglicky mluvících zemích. * **Středník (`;`)** – běžný v Evropě (včetně ČR) pro oddělení sloupců v Excelu. * **Tabulátor (`\t`)** – pak se formát označuje jako **TSV** (Tab-Separated Values). Příklad s oddělovačem středníkem: jmeno;prijmeni;vek;oddeleni Jan;Novák;32;IT Eva;Svobodová;28;Marketing ===== Pravidla pro uvozovky a speciální znaky ===== Pokud hodnota obsahuje: * oddělovač (např. čárku), * nový řádek, * nebo uvozovky, musí být **uzavřena do uvozovek** (obvykle dvojitých `"`). Pravidla podle [[https://datatracker.ietf.org/doc/html/rfc4180|RFC 4180]] (standard pro CSV): * Hodnoty s obsahem oddělovače, nového řádku nebo uvozovek musejí být uzavřeny v dvojitých uvozovkách. * Uvnitř uvozovek se dvojitá uvozovka zapisuje jako dvě uvozovky: `""`. Příklad: nazev,poznamka "Projekt Alpha","Obsahuje čárku, teď je v pořádku" "Kniha ""1984""","Klasika od George Orwella" ===== Výhody a nevýhody ===== ^ Výhody ^ Nevýhody ^ | **Jednoduchost** – čitelné i pro lidi, snadno generovatelné. | **Žádná standardizace typů dat** – vše je text; čísla, datumy nebo logické hodnoty nejsou rozlišeny. | | **Široká podpora** – většina software jej umí importovat/exportovat. | **Nejednoznačnost** – různé programy používají různé oddělovače, kódování, formáty datumů. | | **Lehké soubory** – malá velikost, vhodné pro výměnu dat. | **Žádná podpora vztahů nebo struktury** – jen plochá tabulka, nelze reprezentovat hierarchii (na rozdíl od JSON nebo XML). | | **Nezávislost na platformě** – funguje na Windows, Linux, macOS. | **Bezpečnostní rizika** – některé programy (např. Excel) automaticky interpretují obsah jako vzorce (tzv. **formula injection**). | ===== Kódování znaků ===== Nejčastější kódování: * **UTF-8** – doporučené pro mezinárodní výměnu, podporuje všechny znaky (včetně háčků a čárek v češtině). * **Windows-1250** – tradiční kódování pro češtinu ve Windows (dnes již méně doporučované). ❗ Důležité: Pokud soubor obsahuje háčky a čárky (např. „Česká republika“), musí být uložen v kódování, které je podporuje (nejlépe **UTF-8 s BOM** pro kompatibilitu s Excelem na Windows). ===== Použití v praxi ===== * **Export dat z databáze** – rychlý způsob, jak data přenést do Excelu. * **Import produktových katalogů** – e-shopy často umožňují nahrát zboží přes CSV. * **Zpracování dat v Pythonu** – modul `csv` umožňuje snadné čtení a zápis. * **Migrační skripty** – přenos dat mezi systémy (např. z CRM do analytického nástroje). Příklad v Pythonu: import csv with open('zamestnanci.csv', encoding='utf-8') as soubor: reader = csv.DictReader(soubor) for radek in reader: print(radek['jmeno'], radek['prijmeni']) ===== Bezpečnostní doporučení ===== * Nikdy neotvírej podezřelé CSV soubory v Excelu – mohou obsahovat **škodlivé vzorce** (např. `=cmd|' /C calc'!A0`). * Při importu do Excelu vždy zvol **„Text“** jako formát sloupce, ne „Obecný“. * Ověř kódování a oddělovač před zpracováním. * Nepoužívej CSV pro citlivá data bez šifrování (např. osobní údaje podle GDPR). ===== Standardy a normy ===== * **RFC 4180** – formální specifikace formátu CSV (včetně pravidel pro uvozovky, řádkování a MIME typ `text/csv`). * **MIME typ**: `text/csv` * **Přípona souboru**: `.csv` ===== Související pojmy ===== * [[TSV]] * [[JSON]] * [[XML]] * [[Tabulkový procesor]] * [[Databáze]] * [[ETL]] ===== Externí odkazy ===== * RFC 4180 – Common Format and MIME Type for Comma-Separated Values (CSV) Files: https://datatracker.ietf.org/doc/html/rfc4180 * W3C – Model for Tabular Data and Metadata on the Web: https://www.w3.org/TR/tabular-data-model/ ===== Viz také ===== * [[Import dat]] * [[Export dat]] * [[Kódování znaků]]