De laatste CSV die me een middag kostte, was een export van 40 MB van een WooCommerce-winkel van een klant. Ik dubbelklikte erop, Excel besloot dat de SKU-kolom een datum was en 2024-11-3 was ineens wat vroeger was 2024-11-3- behalve dat het was' t, het was een productcode Excel had het behulpzaam herschreven Tegen de tijd dat we het merkten, was de & quot; cleaned" bestand al opnieuw geïmporteerd en een paar honderd producten hadden SKU's die op niets wezen.
Dat is het probleem met het openen van een CSV in een spreadsheettoepassing. Een spreadsheet is geen kijker, het is een redacteur met meningen. Het dwingt typen, het stript voorloopnullen van postcodes en telefoonnummers, het herinterpreteert alles dat vaag op een date lijkt, en het doet dit allemaal voordat je naar een enkele rij hebt gekeken. Soms wil je gewoon bestrijken het bestand - controleer de kolomnamen, bevestig het aantal rijen, zoek het record dat de import heeft verbroken en ga weg.
ik bouw Toolz.dev en ik lees andere mensen' s CSV exporteert constant - Stripe uitbetalingen, database dumps, analytics extracten, plugin migratie bestanden Dus ik bouwde de CSV-kijker Om de saaie, eerlijke optie te zijn: het parseert het bestand, laat je precies zien wat erin zit en verandert niets. Geen type dwang, geen autocorrectie, geen upload. Plak de tekst of laat het bestand vallen en het wordt weergegeven als een tabel die u kunt zoeken en sorteren.
tl;dr: Een CSV-viewer ontleedt gescheiden tekst en geeft deze weer als een tabel zonder waarden te bewerken of af te dwingen. de CSV-kijker detecteert automatisch of uw bestand komma's, puntkomma's, tabbladen of pijpen of handgrepen gebruikt RFC 4180 geciteerde velden (komma's en nieuwe regels in cellen, dubbele aanhalingstekens), waarschuwt u voor rafelige rijen en dubbele headers, en exporteert naar genormaliseerde CSV of JSON. Alles draait in uw browser - het bestand wordt nooit geüpload en waarden blijven strings, zodat leidende nullen overleven.
Wat is eigenlijk een CSV-bestand?
CSV staat voor door komma's gescheiden waarden, en die naam is verantwoordelijk voor tien jaar bugs, omdat twee van de drie woorden onbetrouwbaar zijn.
De waarden worden niet altijd gescheiden door komma's Locales die een komma als decimaal scheidingsteken gebruiken - het grootste deel van continentaal Europa - exporteren in plaats daarvan met puntkomma's, omdat 1,50;2,75 is ondubbelzinnig en 1,50,2,75 is niet. Excel in een Duitse of Franse locale doet dit standaard. Analytics en database-exporteren maken vaak gebruik van tabbladen en logpijplijnen gebruiken vaak pipes. Elk van deze is nog steeds in de volksmond een "CSV".
En de waarden zijn niet altijd duidelijk. Op het moment dat een waarde het scheidingsteken bevat, heeft het formaat een ontsnappingsluik nodig en RFC 4180 biedt er één: Wikkel het veld in dubbele aanhalingstekens. Binnen die citaten is het scheidingsteken slechts een personage. Een citaatkarakter zelf wordt ontsnapt door het te verdubbelen. En een geciteerd veld kan letterlijke regeleinden bevatten, wat betekent dat een enkel logisch record meerdere fysieke regels in het bestand kan omvatten.
Dat laatste punt is waar naïeve parsers sterven. Als uw code is line.split(',')- en ik heb die regel geschreven, en jij ook - dan zal dit bestand het vernietigen:
id,name,note
1,"Smith, John","He said ""hi""
on the second line"
2,Ada,plain
Drie kolommen, twee records. Een split-on-comma-parser ziet vier velden in rij twee, panikeert op de verdwaalde aanhalingstekens en behandelt de ingepakte regel als een derde record. Een echte parser loopt het tekenreekspersonage per teken en volgt of het momenteel binnen aanhalingstekens staat, en produceert precies wat het bestand betekent. De CSV-kijker doet het tweede.
Belangrijkste kenmerken van de CSV-viewer
Automatische scheidingstekendetectie
Plak een bestand en het gereedschap raadt de scheidingsteken voordat het iets anders doet De naïeve benadering is om tekens te tellen en de meest voorkomende te kiezen, die onmiddellijk mislukt op proza - a notes Kolom vol Engelse zinnen bevat veel meer komma's dan een door puntkomma's gescheiden bestand heeft puntkomma's.
Dus de detectiescores gevolg in plaats van frequentie. Het neemt de eerste tien niet-lege regels, telt elk scheidingsteken van de kandidaat (komma, puntkomma, tab, pijp) buiten de geciteerde secties en beloont de kandidaat die op elke regel dezelfde graaf produceert. Een echte scheidingsteken verschijnt precies columns - 1 tijden per rij, elke rij Een komma binnenin proza verschijnt onregelmatig Consistentie wint, frequentie verbreekt alleen de banden Als het nog steeds verkeerd raadt - en dat zal ook gebeuren, op bestanden met één kolom - kun je het overschrijven vanuit de vervolgkeuzelijst.
RFC 4180 geciteerde veldparsering
De parser is een statusmachine op karakterniveau, geen regex en geen splitsing. Het volgt één boolean: zijn we in een geciteerd veld? Binnen aanhalingstekens, scheidingstekens en nieuwe regels zijn gewone karakters en een verdubbelde "" geeft een enkele letterlijke quote uit. Buiten citaten, een scheidingsteken beëindigt het veld en een nieuwe regel beëindigt het record. CRLF-, LF- en blote CR-regeleinden worden allemaal geaccepteerd, omdat Windows-export, UNIX-export en oude Mac-exporten allemaal bestaan en allemaal in dezelfde inbox terechtkomen.
Dit is het verschil tussen een kijker die je laat zien Smith, John in één cel en een die je laat zien "Smith en John" In twee.
Zoek in elke kolom
Het zoekvak filtert rijen met een hoofdletterongevoelige substringmatch tegen elke cel in de rij. Het is niet vaag, het is geen zoektaal, en dat is opzettelijk - als je op zoek bent naar het record dat een import heeft verbroken, heb je een bestel-ID of een e-mailadres en je wilt de rij die het bevat, onmiddellijk.
Zoeken wordt uitgevoerd op de geparseerde gegevens in het geheugen, dus het is direct op bestanden van elke grootte die uw browser kan vasthouden, en het componeert met sorteren: Filter eerst, sorteer het resultaat, exporteer wat er nog over is.
Numeriek-bewuste kolomsortering
Klik op een kolomkop om er op te sorteren Dit klinkt triviaal en is dat niet, omdat CSV geen typen heeft - elke waarde komt als een tekenreeks aan en het sorteren van tekenreeksen zet 100 vooruit 9 en 2024-3-1 vooruit 2024-11-1.
De sortering inspecteert de waarden: als elke niet-lege cel in de vergelijking als een getal (met duizenden scheidingstekens gestript), numeriek vergelijkt. Anders valt het terug naar een locale-aware stringvergelijking met numerieke sortering, dus item2 Sorteert eerder item10. Lege cellen zinken altijd naar de bodem, in beide richtingen, omdat een blanco geen kleine waarde is - het ontbreekt, en het begraven van ontbrekende gegevens bovenaan een aflopende soort is hoe je het niet opmerkt.
Waarschuwingen voor gegevenskwaliteit
Twee structurele problemen worden gemarkeerd voordat u verder gaat.
rafelige rijen. Als een rij meer of minder velden heeft dan de koptekst, is er iets fout stroomopwaarts: een niet-geciteerd scheidingsteken binnen een waarde, een afgeknotte export, een verdwaalde nieuwe regel. De viewer remt korte rijen en slaat lange af zodat de tabel nog steeds wordt weergegeven en vertelt je dan precies hoeveel rijen zijn beïnvloed. Dat telling is het getal dat ik eerst controleer, omdat een bestand met drie haveloze rijen van de tienduizend een databug heeft dat een COPY in Postgres zal om 3 uur 's nachts naar boven komen.
Dubbele kolomnamen. Twee kolommen genaamd id zal elkaar stil overschrijven in bijna elke downstream consument - panda's zullen ze hernoemen, een JSON conversie zal alleen de laatste behouden, en een SQL import zal fout De kijker noemt ze in de waarschuwingsbanner, zodat je de header kunt repareren voordat het er toe doet.
CSV en JSON-export
Het exportpaneel serialiseert opnieuw wat er momenteel op het scherm staat: gefilterd, gesorteerd, wat je ook hebt gedaan. De CSV-export past de juiste RFC 4180-citaat toe op de uitweg, wat het een fatsoenlijke manier maakt om een bestand te normaliseren dat is aangekomen met inconsistente citaten. De JSON-export converteert de tabel naar een reeks objecten die zijn ingesleuteld in de koprij, wat u wilt als u een script of een API aan het invoeren bent.
Een bewuste keuze: Geëxporteerde waarden blijven strings. "01234" wordt niet 1234. Een CSV-kolom vol cijfers kan een hoeveelheid zijn, of het kan een postcode, een rekeningnummer, een telefoonnummer of een SKU zijn - en er is geen manier om aan de gegevens te zien. Het dwingen tot cijfers gooit leading nullen permanent weg, wat precies de bug is waarmee dit artikel is begonnen. Als je cijfers wilt, gooi ze dan expliciet aan de andere kant, waar je weet wat de kolom betekent.
Het draait volledig in uw browser
Het bestand wordt gelezen met de FileReader API en geparseerd in JavaScript. Er wordt niets geüpload, er wordt geen zoekopdracht gelogd, geen gegevens raken een server. Dit is geen beleidsbelofte, het is een architectonisch feit dat u kunt verifiëren door het tabblad DevTools' te openen terwijl u de tool gebruikt, of door uw wifi te trekken en te kijken hoe het blijft werken.
Dat is belangrijker dan het klinkt. De meeste CSV-bestanden die het bekijken waard zijn, bevatten iets dat u niet in de website van een vreemde zou plakken: e-mails van klanten, salariscijfers, bestelgeschiedenissen, een export uit een productiedatabase. Als je werkt onder de AVG, HIPAA of een NDA van een klant, "ik heb het in een online converter geplakt" is geen zin die je hardop wilt zeggen. Ik schreef meer over dat dreigingsmodel in Waarom client-side tools beat cloud-converters.
Hoe de CSV-viewer te gebruiken
Stap 1: laad het bestand
Twee manieren in Plak de CSV tekst direct in het invoervak - goed voor een fragment uit een log, een Slack bericht, of een API antwoord dat u wilt oogballen Of klik upload bestand en kies een .csv, .tsv, of .txt bestand vanaf uw machine. het bestand wordt lokaal gelezen; de uploadknop is een bestand plungehor, geen upload.
Als u uit een spreadsheet plakt, merkt u dat de meeste spreadsheettoepassingen tab-gescheiden tekst op het klembord plaatsen, niet op komma's. Stel het scheidingsteken in op het tabblad, of laat het op automatisch staan en laat de detectie het afhandelen.
Stap 2: Controleer de Parse-instellingen
Drie instellingen en de standaardinstellingen zijn meestal goed.
scheidingsteken is standaard automatisch. Overschrijf het als uw bestand één kolom heeft, of als de detectie verkeerd gokt op een kleine steekproef.
Eerste rij is koptekst staat aan. zet het uit voor headerless bestanden - de kolommen worden Column 1, Column 2, enzovoort, en er wordt geen rij geconsumeerd.
Witruimte trimmen is aan, die voorloop- en sleepruimten uit elke cel stript. Dit is meestal wat je wilt, want , Na een scheidingsteken is het zeer gebruikelijk in handgeschreven CSV's. Schakel het uit als uw gegevens zinvolle vooraanstaande ruimtes hebben, zoals velden met vaste breedte die zijn gedumpt naar CSV.
Stap 3: Lees de tabel
gelukkige zet Bekijk als tafel en je krijgt het geparseerde raster plus een statistiekregel: hoeveel rijen zijn zichtbaar uit hoeveel totaal, hoeveel kolommen, welke scheidingsteken is gebruikt en hoeveel kolommen zijn volledig numeriek Die numerieke telling is een snelle controle van de geestelijke gezondheid - als een kolom waarvan je verwacht dat deze numeriek is, niet wordt meegeteld, bevat een rij daarin een niet-nummer, en het is meestal de rij die uw import verbreekt.
Zoeken Filters rijen. Klikken op een koptekst sorteert. De twee componeren.
Stap 4: Exporteren of verder gaan
Kopieer de zichtbare tabel als JSON, download deze als CSV of download deze als JSON. filters en sortering worden toegepast op de export, dus "zoek naar refunded, Sorteren op datum, CSV downloaden" geeft u precies die subset.
Hoe verhoudt dit zich tot andere manieren om een CSV te openen?
| toegang | dwingt uw gegevens | Handelt geciteerde velden | Werkt offline | Verzendt gegevens overal | goed voor |
|---|---|---|---|---|---|
| CSV-viewer (Toolz.dev) | heel weinig | Ja (RFC 4180) | ja | heel weinig | Inspecteren, zoeken, sanity-checking, converteren naar JSON |
| Excel / Google-bladen | Ja - datums, leidende nullen, wetenschappelijke notatie | ja | Excel Ja, bladen Nee | Spreadsheets uploadt naar Google | Bewerken, formules, grafieken |
| Een teksteditor | heel weinig | Nee, je ontleed het in je hoofd | ja | heel weinig | Tiny files, het controleren van de eindjes van de lijn |
csvkit / xsv / DuckDB-CLI |
heel weinig | ja | ja | heel weinig | Enorme bestanden, scripting, joins, aggregatie |
PADAS read_csv |
Ja, standaard (dtype=str om het te stoppen) |
ja | ja | heel weinig | Analyse, transformatiepijplijnen |
| De meeste "online CSV-viewer" sites | variëren | doorgaans | heel weinig | Ja - geüpload naar hun server | Niets waar je om geeft |
De eerlijke samenvatting: gebruik voor bestanden boven een paar honderd megabytes, DuckDB of xsv- een browser parseert het hele bestand in één keer in het geheugen en daar is geen manier omheen Voor alles wat je nodig hebt om met formules te bewerken, gebruik een spreadsheet en accepteer de dwang, of importeer als tekst Voor alles daartussenin - de dagelijkse & quot; wat er eigenlijk in dit bestand staat, en waarom heeft rij 4.201 break" - een viewer die niets verandert is het juiste hulpmiddel.
Veelvoorkomende gebruiksgevallen
Een mislukte import debuggen
Een CSV-import mislukt met "verwachte 8 kolommen, kreeg 9 op regel 4201" Open het bestand in de viewer, controleer de waarschuwing voor een haveloze rij en zoek vervolgens naar een waarde waarvan u weet dat deze op dat record staat. Negen van de tien keer vindt u een niet-geciteerde komma in een adres of bedrijfsnaam Acme, Inc. geschreven zonder aanhalingstekens. Nu weet u of u het exporteren of het vooraf verwerken van het bestand moet repareren.
Een database-export bekijken voordat deze ergens heen gaat
Voordat de gegevens van een klant op uw laptop verlaat, wilt u weten wat erin zit. kolomnamen, rijentelling, of de email kolom is volledig ingevuld, of er dubbele ID's zijn. De statistiekenregel en kolom gevuld/unieke tellingen beantwoorden dat allemaal in ongeveer tien seconden, zonder dat het bestand ooit een server bereikt.
CSV converteren naar JSON voor een API of een script
Je hebt een spreadsheet met records en je hebt ze nodig als JSON om een database te seeden, een REST-eindpunt te voeden of een fixture-bestand te bouwen. Plakken, ontleden, exporteren JSON. Als u de omgekeerde trip nodig heeft, CSV naar JSON en JSON naar CSV tools verwerken speciale conversie met meer opties, en ik liep in detail door het probleem van de retourvlucht in de JSON naar CSV-conversiegids.
Een Europese export controleren die als één kolom werd geopend
Een client stuurt een export van een Duitse Excel-installatie en elke rij is één lange tekenreeks Stel de scheidingsteken in op Semicolon en het klikt in kolommen Dit duurt vier seconden en is de moeite waard om te weten over, omdat de reflex & quot; het bestand corrupt" is verkeerd - het bestand is prima, uw parser's aanname was niet.
Auditanalyse of advertentieplatformexport
GA4, Google Ads, en Meta exports komen als CSV met metadata rijen boven de eigenlijke header Schakel uit & quot; Eerste rij is header", kijk naar de vorm, en je zult precies zien op welke lijn de echte header zit - verwijder dan de ongewenste regels uit de plakbox en opnieuw parseren.
Technische diepe duik: de ontledingsregels die er echt toe doen
RFC 4180 is een beschrijving, geen standaard die iemand afdwingt. Het werd in 2005 gepubliceerd om te documenteren wat CSV-implementaties al deden, en het merkt expliciet op dat veel verschillen. Behandel het als de verstandige basislijn, niet als een garantie voor een bestand dat u bent verzonden.
Regels citeren. Een veld kan in dubbele aanhalingstekens worden verpakt. Binnen aanhalingstekens, scheidingstekens, CR, LF en verdubbelde aanhalingstekens ("" → ") zijn letterlijk. Een citaat dat in het midden van een niet-geciteerd veld verschijnt, is dubbelzinnig - de kijker beschouwt citeren alleen als significant als het citaat het eerste teken van het veld is, en dat is hoe de meeste echte parsers zich gedragen en waarden als 6" nails overleven.
lijneinden. CRLF is wat de specificaties zeggen. LF is wat Unix produceert. Een kale CR is wat zeer oude Mac-software heeft geproduceerd en wat een paar embedded systemen nog steeds produceren. De parser accepteert alle drie, inclusief gemengde eindes in één bestand, omdat gemengde eindes absoluut plaatsvinden wanneer bestanden op twee machines worden bewerkt.
de bom. UTF-8-bestanden geschreven door Excel beginnen met een byte-ordermarkering, EF BB BF. Als uw eerste kolomnaam eruitziet id Maar een snaarvergelijking tegen "id" Mislukt, die onzichtbare stuklijst rijdt er vooraan. Dit is de meest voorkomende "waarom gaat mijn header lookup fail" bug in CSV-afhandeling.
sleep nieuwe lijnen. Een bestand dat eindigt met een nieuwe regel heeft geen extra lege plaat - de nieuwe regel beëindigt de laatste plaat De optie viewer' s skip-empty-lines maakt dit hoe dan ook een non-issue.
type inferentie. Er is & #39; t een. CSV heeft geen types Elke waarde in het bestand is een string, en elk type dat je aan de andere kant tevoorschijn haalt, is uitgevonden door je parser op basis van een gok Dit is geen fout in het formaat, het is het formaat' de hele natuur - en het is de reden waarom de kijker nooit namens jou raadt.
FAQ
Hoe open ik een CSV-bestand zonder Excel?
Upload het bestand naar de CSV-kijker of plak de inhoud in het invoervak. Het bestand wordt geparseerd in uw browser en weergegeven als een tabel die u kunt zoeken en sorteren. Geen spreadsheetsoftware, geen installatie en geen upload naar een server.
Waarom opent mijn CSV als één lange kolom?
De scheidingsteken komt niet overeen. Bestanden die in landinstellingen worden geëxporteerd die een komma gebruiken als decimaaltekens, gebruiken doorgaans puntkomma's tussen velden en door tabs gescheiden exporttabbladen gebruiken. Schakel de scheidingstekeninstelling van Auto naar Puntkomma, Tab of Pipe en de kolommen zullen correct worden gesplitst.
Behandelt de kijker komma's in geciteerde velden?
Ja. De parser volgt RFC 4180: een veld dat in dubbele aanhalingstekens is verpakt, kan scheidingstekens, regeleinden en ontsnapte aanhalingstekens bevatten die zijn geschreven als twee dubbele aanhalingstekens op een rij. een waarde zoals "Smith, John" Blijft in één cel in plaats van in tweeën te splitsen.
Wat is het verschil tussen CSV en TSV?
Ze gebruiken verschillende veldscheiders - CSV scheidt met komma's, TSV met tabtekens TSV hoeft minder te citeren omdat tabbladen zelden voorkomen binnen gegevenswaarden, daarom geeft database - en analyse-export vaak de voorkeur aan het Deze viewer leest beide; kies Tab als scheidingsteken voor TSV-bestanden.
Wat betekent de "rafelige rijen" waarschuwing?
Een rij heeft meer of minder velden dan de koprij. Het betekent meestal een niet-geciteerd scheidingsteken binnen een waarde, een afgeknotte export of een veld dat een verdwaalde regeleinde bevat. De kijker vult korte rijen en snoeit lange rijen zodat de tabel nog steeds wordt weergegeven en vertelt u hoeveel rijen zijn beïnvloed.
Is er een limiet voor bestandsgrootte?
De praktische limiet is uw browsergeheugen, aangezien het hele bestand wordt geparseerd in een enkele JavaScript-pass. Bestanden tot een paar tientallen megabytes zijn prima op een typische laptop. Gebruik voor multi-gigabyte-export in plaats daarvan een streamingtool zoals CSVKit, DuckDB of Panda's met chunkSize.
Kan ik de CSV naar JSON converteren?
Ja. Het deelvenster Exporteren converteert de geparseerde tabel naar een reeks JSON-objecten die zijn ingesleuteld door de koprij, die u kunt kopiëren of downloaden. Waarden blijven door hun ontwerp als tekenreeksen - door ze naar cijfers te dwingen, worden voorloopnullen van ID's, postcodes en telefoonnummers verwijderd.
Is het veilig om hier een vertrouwelijke CSV te openen?
Ja. Parsing wordt volledig in uw browser uitgevoerd met JavaScript en de FileReader API. Er wordt geen bestand, cel of zoekopdracht naar een server verzonden of gelogd. U kunt dit verifiëren door uw browser DevTools Network-tab te openen terwijl u de tool gebruikt, of door de verbinding met internet te verbreken.
Gerelateerde tools
- CSV naar JSON- speciale conversie met typeopties
- JSON naar CSV- de terugreis, inclusief het platmaken van geneste voorwerpen
- XML naar JSON- voor de export die in plaats daarvan als XML arriveert
- JSON-formatter- ruim de JSON op die je zojuist hebt geëxporteerd
- JSON-differentiatie- vergelijk twee exportproducten en ontdek wat er is veranderd
Verder lezen: De ultieme gids voor JSON-tools en JSON naar CSV-conversie.



