Kommasepareret værdier

En kommasepareret værdier fil gemmer tabeldata i almindelig tekst form. Almindelig tekst betyder, at filen er en sekvens af tegn, med ingen data, der skal fortolkes som binære tal. En CSV-fil består af et vilkårligt antal poster, adskilt af linjeskift af en eller anden art; hver post består af felter, adskilt af en anden karakter eller snor, oftest en bogstavelig komma eller fane. Normalt alle poster har en identisk sekvens af felter.

En generel standard for CSV-filformatet ikke eksisterer, men RFC 4180 giver en de facto standard for nogle aspekter af det.

Anvendelse

CSV er en fælles, relativt simpelt filformat, er bredt understøttet af forbrugerne, erhvervslivet, og videnskabelige anvendelser. Blandt de mest almindelige anvendelser er i bevægelse tabeldata mellem programmer, som oprindeligt opererer på inkompatible formater. Det virker, fordi så mange programmer støtte nogle variation af CSV mindste som alternativ import / eksport-format.

For eksempel kan en bruger nødt til at overføre information fra en database program, der gemmer data i en proprietær format, til et regneark, der bruger et helt andet format. Databasen program sandsynligvis kan eksportere sine data som "CSV"; den eksporterede CSV-fil kan derefter importeres af regneark.

"CSV" er ikke en eneste, veldefineret format. Snarere udtrykket "CSV" henviser i praksis til en fil, der:

  • er almindelig tekst ved hjælp af et tegnsæt såsom ASCII, Unicode, EBCDIC, eller Shift JIS,
  • består af plader,
  • med de registre opdelt i felter adskilt af skilletegn,
  • hvor hver post har samme sekvens af felter.

Inden for disse generelle begrænsninger, er mange variationer i brug. Derfor "CSV" filer er ikke helt bærbare. Ikke desto mindre er variationerne er forholdsvis små, og mange implementeringer giver brugerne mulighed for at få vist de første par linjer af filen, og derefter angive afgrænsningstegn, citerer regler, etc. Hvis en bestemt CSV fils variationer falder uden hvad en bestemt modtagende program understøtter, er det ofte muligt at undersøge og redigere filen manuelt eller skrive et script eller program til at løse problemet.

Historie

Komma-adskilte værdier er et dataformat, at præ-datoer personlige computere med mere end et årti: IBM Fortran compiler under OS / 360 støttet dem i 1967. Liste-rettet input / output blev defineret i FORTRAN 77, godkendt i 1978. Liste -dirigerede input bruges kommaer og / eller mellemrum for afgrænsere, så unoterede tegnstrenge kunne ikke indeholde komma eller mellemrum.

Kommasepareret værdi lister er nemmere at skrive end data fast kolonne alliancefrie, og var mindre tilbøjelige til at producere forkerte resultater, hvis en værdi blev bokset væk en kolonne ud fra dets tiltænkte placering.

Komma adskilte lister bruges til udveksling af databasen oplysninger mellem maskiner af to forskellige arkitekturer. Den almindelig tekst karakter af CSV-filer i høj grad undgår uforenelighed såsom byte-orden og word størrelse. Filerne er stort set læsbar, så det er nemmere at håndtere dem i mangel af perfekt dokumentation eller kommunikation.

Generel funktionalitet

CSV-formater er bedst brugt til at repræsentere sæt eller sekvenser af optegnelser, hvor hver post har en identisk liste over marker. Dette svarer til en enkelt forbindelse i en relationsdatabase, eller data i en typisk regneark.

CSV-formater er ikke begrænset til en bestemt tegnsæt. De arbejder lige så godt med Unicode som med ASCII. CSV-filer normalt vil endda overleve naiv oversættelse fra et tegnsæt til et andet. CSV dog ikke, nogen måde at angive, hvad tegnsæt er i brug, så der skal meddeles separat, eller bestemmes i den modtagende ende.

Databaser, der omfatter flere relationer kan ikke eksporteres som en enkelt CSV-fil.

Ligeledes kan CSV ikke naturligt repræsenterer hierarkiske eller objekt-orienterede databaser eller andre data. Dette er fordi hver CSV record forventes at have den samme struktur. CSV er derfor sjældent passende for dokumenter som dem, skabt med HTML, XML eller andre markup eller tekstbehandling teknologier.

Statistiske databaser på forskellige områder har ofte en generelt relation-lignende struktur, men med nogle gentagelige grupper af marker. For eksempel, sundhed databaser, såsom den demografiske og Health Survey typisk gentage nogle spørgsmål for hvert barn af en given forælder. Statistisk analyse systemer omfatter ofte forsyningsselskaber, der kan "rotate" sådanne oplysninger; for eksempel kan en "forælder" post, der indeholder oplysninger om fem børn opdeles i fem separate records, som hver indeholder oplysninger om et barn, og en kopi af alle de ikke-barn-specifikke oplysninger. CSV kan repræsentere enten "vertikal" eller "horisontal" form for sådanne oplysninger.

I en relationsdatabase, er lignende problemer let håndteret ved at oprette en særskilt forhold for hver sådan gruppe, og tilslutning "barn" poster til de relaterede "forældre" poster ved hjælp af en fremmed nøgle. I markup sprog som XML, er sådanne grupper typisk indkapslet i et overordnet element og gentages efter behov. Med CSV er der ingen bredt accepteret single-fil løsning.

Mangel på en standard

Navnet "CSV" angiver brugen af ​​komma til at adskille datafelterne. Ikke desto mindre er udtrykket "CSV" almindeligt anvendt til at henvise en stor familie af formater, som adskiller sig på mange måder. Nogle implementeringer tillade eller kræve enkelte eller dobbelte anførselstegn omkring nogle eller alle områder; og nogle forbeholder allerførste post som en overskrift, der indeholder en liste over feltnavne. Det tegnsæt der bruges er udefineret: nogle programmer kræver en Unicode byte rækkefølge mærke at håndhæve Unicode tolkning Filer, der bruger fanen karakter i stedet for komma kan mere præcist benævnt "TSV" for fanen adskilte værdier.

Andre forskelle implementering omfatter håndtering af mere banale feltseparatorer og newline tegn inde tekstfelter. Endnu subtilitet er fortolkningen af ​​en tom linje: det kan lige så være resultatet af at skrive et referat af nul felter, eller en registrering af et felt på nul længde; således at afkode det er tvetydigt.

Afhængigheden af ​​standarden dokumenteret af RFC 4180 kan forenkle CSV udveksling. Men denne standard specificerer kun håndtering af tekstbaserede felter. Fortolkning af teksten i hvert felt er stadig applikationsspecifikke. Især er der ingen standard for, hvordan at repræsentere decimaltal, selv om de almindeligvis er indlejret i CSV data, og nogle lande anvender en periode som decimaltegn og nogle bruger et komma. Fx kan en fransk CSV-fil skrive pi som 3,14159.

En fælles løsning på interoperabilitet er at stole på menneskelig indgriben: fordi CSV-filer er almindelig tekst, kan mennesket nemt se og diagnosticere de fleste spørgsmål ved hjælp af en teksteditor.

Mod standardisering

Det enorme udvalg blandt "CSV" formater har ført til påstanden om, at der ikke er "CSV-standard". I almindelig brug, næsten alle delimiter-separeret tekstdata kan betegnes som en "CSV" fil. Forskellige CSV-formater muligvis ikke kompatible.

, RFC 4180 er ikke desto mindre et forsøg på at formalisere CSV. Den definerer MIME-typen "text / csv", og CSV-filer, der følger dens regler skal være meget bredt bærbare. Blandt dens krav:

  • MS-DOS-stil linjer, der slutter med tegn
  • En valgfri header rekord.
  • Hver post "bør" indeholder det samme antal kommaseparerede felter.
  • Enhver felt kan blive citeret.
  • Felter, der indeholder en line-break, dobbelt-tilbud, og / eller kommaer bør citeres ..
  • Et citat tegn i et felt, skal være repræsenteret af to citationstegn.

Formatet er enkel og kan behandles af de fleste programmer, der hævder at læse CSV-filer. Undtagelserne er programmer understøtter muligvis ikke line-pauser inden citerede felter, og programmer kan forvirre den valgfri header med data eller fortolke den første datalinie som en valgfri header.

Teknisk baggrund

Formatet går tilbage til de tidlige dage af business computing og er meget udbredt til at videregive data mellem computere med forskellige interne ord størrelser, formatering af data behov, og så videre. Af denne grund, CSV-filer er fælles på alle computerplatforme.

CSV er et afgrænset tekstfil, der bruger et komma til at adskille værdier. Simple CSV implementeringer kan forbyde feltværdier, der indeholder et komma eller andre specialtegn, såsom nye linjer. Mere avancerede CSV implementeringer tillader dem, ofte ved at kræve "tegn omkring værdier, der indeholder reserverede tegn. Embedded dobbelte citationstegn kan så repræsenteres af et par på hinanden følgende dobbelte anførselstegn, eller ved at foranstille en flugt karakter såsom en omvendt skråstreg.

I datalogi vilkår, kan en CSV-fil blive betragtet som en "flad fil".

Grundlæggende regler og eksempler

Mange uformelle dokumenter findes, der beskriver "CSV" formater. IETF RFC 4180 definerer formatet for "tekst / csv" MIME-type registreret hos IANA. En anden relevant specifikation er leveret af udleveret tekst. Creativyst giver et overblik over de variationer, der anvendes i de mest anvendte applikationer, og forklarer, hvordan CSV bedst kan bruges og støttes.

Regler typiske for disse og andre "CSV" specifikationer og implementeringer er som følger:

  • CSV er et afgrænset data format, der har marker / kolonner adskilt af komma karakter og optegnelser / rækker opsiges af linjeskift.
  • En CSV-fil kræver ikke en bestemt tegnsæt, byte orden, eller linje terminator-format.
  • Et rekordstort ender ved en linje terminator. Dog kan line-terminatorer blive indlejret som data i felterne, så softwaren skal anerkende citeret line-separatorer for at rigtigt samle en hel rekord fra måske flere linjer.
  • Alle registreringer skal have det samme antal felter, i samme rækkefølge.
  • Data i felter tolkes som en sekvens af tegn, ikke som en sekvens af bits eller bytes. For eksempel kan den numerisk 65535 repræsenteres som de 5 ASCII-tegn "65535"; men ikke som en sekvens af 2 bytes beregnet til at blive behandlet som en enkelt binært tal snarere end som to tegn. Hvis denne "almindelig tekst" konvention ikke følges, så CSV-filen indeholder ikke længere tilstrækkelige oplysninger til at fortolke det korrekt, vil CSV-filen ikke sandsynligt overlever transmission på tværs forskellige computerarkitekturer, og vil ikke være i overensstemmelse med teksten / csv MIME-type.
  • Tilstødende felter skal være adskilt af et komma. Men "CSV" formater varierer meget i dette valg af separator karakter. Især er i lokaliteter, hvor komma bruges som decimaltegn, semikolon, TAB, eller andre tegn bruges i stedet.
  • Enhver felt kan blive citeret. Nogle felter skal citeres, som angivet i følgende regler.
  • Felter med indlejrede kommaer eller anførselstegn tegn skal blive citeret.
  • Hver af de indlejrede anførselstegn tegn skal være repræsenteret ved et par anførselstegn tegn.
  • Felter med indlejrede linjeskift skal citeret.
  • I nogle CSV implementeringer, er førende og efterfølgende mellemrum og faner trimmes. Denne praksis er kontroversielt, og ikke i overensstemmelse med RFC 4180, hvori det hedder, "Mellemrum betragtes som en del af et felt, og bør ikke ignoreres.".
  • Ifølge RFC 4180, er rum uden citater i et felt ikke tilladt; dog RFC siger også, at "Mellemrum betragtes som en del af et felt, og bør ikke ignoreres." og "implementors bør 'være konservativ i, hvad du gør, være liberal i hvad du acceptere fra andres, når de behandler CSV-filer."
  • I CSV implementeringer, der trimme ledende eller afsluttende mellemrum, skal felter med sådanne rum som meningsfulde data blive citeret.
  • Den første post kan være en "header", som indeholder kolonnenavne i hvert af felterne.

Eksempel


Ovenstående tabel af data kan være repræsenteret i CSV-format på følgende måde:

Eksempel på en USA / UK CSV-fil:

Eksempel på en analog europæisk CSV / DSV fil:

Sidstnævnte format er ikke RFC 4180-kompatibel. Overholdelse kunne opnås ved anvendelse af et komma i stedet for semikolon som separator og enten den internationale notation til angivelse for decimaltegnet varemærke eller praksis for at citere alle tal, der har en decimal varemærke.

Ansøgning support

CSV-filformat er meget enkel og understøttes af næsten alle regneark og database management systemer. Mange programmeringssprog har biblioteker til rådighed, der understøtter CSV-filer. Mange implementeringer understøtter ændre feltet-separator karakter og nogle citerer konventioner, selv om det er sikrest at bruge de enkleste konventioner, at maksimere modtagernes chancer for håndtering af data.

Microsoft Excel vil open.csv filer, men afhængigt af systemets regionale indstillinger, kan det forventer et semikolon som separator i stedet for et komma, for i nogle sprog kommaet bruges som decimaladskiller. Desuden vil mange regionale versioner af Excel ikke være i stand til at håndtere Unicode i CSV. En enkel løsning, når de møder disse vanskeligheder er at ændre filtypenavnet fra til; derefter åbne filen fra en allerede kører Excel eksempel med "Open" kommando.

OpenOffice.org Calc og LibreOffice Calc håndtere CSV-filer og indsatte tekst med en dialogboks tekst Import beder brugeren manuelt angive afgrænsere, kodning, format af kolonner mv

Der er mange hjælpeprogrammer på Unix-stil systemer, der kan håndtere det mindste nogle CSV-filer. Mange af disse værker har en måde at ændre afgrænsningstegn, men mangler støtte til andre variationer. Nogle af de nyttige programmer er:

  • kolonne (-s at ændre afgrænsningstegn)
  • cut
  • pasta
  • tilslutte
  • slags
  • Uniq
  • Emacs
  • awk
  0   0

Kommentarer - 0

Ingen kommentar

Tilføj en kommentar

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Tegn tilbage: 3000
captcha