Direct naar de tool
ViewCSV
Niets wordt geüpload

Een CSV splitsen in kleinere bestanden

orders.csv· VOORBEELDGEGEVENS15 rijen · 8 kolommen
De delen zijn byte-voor-byte-kopieën van de oorspronkelijke records: aanhalingstekens, regeleinden en de byte order mark blijven gelijk, en een regeleinde tussen aanhalingstekens splitst nooit een record.
Kies hoe je wilt splitsen en toon daarna de delen of download ze als ZIP.

Je kunt elk deel ook los downloaden vanuit de lijst.

15 rijen

Open een CSV-bestand en kies hoe je het wilt opdelen: een vast aantal rijen per bestand, een maximale bestandsgrootte, een aantal bestanden, of één bestand per waarde in een kolom. Elk deel is een byte-voor-byte-kopie van de oorspronkelijke records, met de kopregel bovenaan herhaald, zodat aanhalingstekens, regeleinden, codering en byte order mark gelijk blijven. Bekijk de lijst met delen en download ze los of samen als ZIP. Ook bestanden groter dan 25 MB worden gesplitst, en er wordt niets geüpload.

Zo splits je een CSV-bestand

  1. Open een .csv-, .tsv- of .txt-bestand, sleep het naar de tool of plak rijen. De eerste rij geldt als kopregel.
  2. Kies waarop je wilt splitsen en vul het aantal rijen, de maximale grootte in bytes, het aantal bestanden of de kolom in.
  3. Bekijk de delen met de naam, het aantal rijen en de grootte van elk bestand, en download één deel of alle delen samen als één ZIP.

De delen krijgen de naam van het oorspronkelijke bestand: orders.csv wordt orders-part-001.csv, orders-part-002.csv… Een .tsv-bestand houdt de extensie .tsv. Het ZIP-bestand heet orders-parts.zip.

Manieren om te splitsen

Rijen per bestandElk deel krijgt dit aantal gegevensrijen; het laatste deel krijgt de rest. De kopregel telt niet mee.
Maximale bestandsgrootteElk deel wordt gevuld met hele records tot het volgende record over de grens zou gaan, geteld in bytes inclusief kopregel en byte order mark. Een record wordt nooit doormidden geknipt. Is één record groter dan de grens, dan stopt het splitsen met een foutmelding die dat record noemt.
Aantal bestandenDe tool telt eerst de records en zet daarna in elk deel hetzelfde aantal rijen, naar boven afgerond (maximaal 1.000 bestanden). Door die afronding kun je minder bestanden krijgen dan je vroeg: 5 rijen over 4 bestanden geeft delen van 2, 2 en 1.
Waarden in een kolomRijen worden gegroepeerd op de exacte waarde in de gekozen kolom, en elke waarde wordt een eigen bestand: orders-West.csv, orders-East.csv…, in de volgorde waarin de waarden voor het eerst voorkomen. Binnen elk deel houden de rijen hun oorspronkelijke volgorde. Maximaal 1.000 verschillende waarden.
Kopregel in elk bestand herhalenStandaard aan. Zet het uit om de kopregel alleen in het eerste deel te houden, bijvoorbeeld als de delen later weer aan elkaar worden geplakt.

Waarden tussen aanhalingstekens, ruwe records en bestandsnamen

  • Waarden tussen aanhalingstekens met het scheidingsteken of regeleinden erin blijven binnen hun record, gelezen volgens RFC 4180. Een adres over meerdere regels wordt nooit over twee delen verspreid.
  • Records worden als ruwe bytes gekopieerd, nooit opnieuw ingelezen en herschreven: aanhalingstekens, regeleinden en voorloopnullen blijven precies gelijk. Een UTF-8-byte order mark aan het begin van het bestand komt aan het begin van elk deel, zodat Excel elk deel nog steeds als UTF-8 herkent.
  • Lege regels tussen records worden overgeslagen. Heeft het laatste record geen regeleinde, dan krijgt het deel het regeleinde van het bestand zelf.
  • Kolomwaarden worden exact vergeleken: West en west worden aparte bestanden. Omdat veel bestandssystemen hoofdletters negeren, krijgt het tweede bestand de naam orders-west-2.csv in plaats van het eerste te overschrijven.
  • In bestandsnamen worden tekens zoals / \ : * ? " < > | vervangen door _, worden namen afgekapt op 60 tekens, en wordt een lege waarde orders-empty.csv. In de kolom met waarden in het overzicht zie je precies welke waarde elk bestand bevat.

Welke coderingen gesplitst kunnen worden

Splitsen werkt rechtstreeks op bytes. Dat is veilig voor UTF-8 en coderingen met één byte per teken, zoals Windows-1252. UTF-16-bestanden kunnen op deze manier niet worden gesplitst; sla ze eerst op als UTF-8, bijvoorbeeld met CSV-scheidingsteken en codering wijzigen. Bestanden in Shift_JIS, GB18030, GBK en Big5 kunnen worden gesplitst als het scheidingsteken een komma, puntkomma of tab is, maar niet bij een verticale streep, omdat die byte in die coderingen binnen een teken kan voorkomen. Kan een bestand niet worden gesplitst, dan meldt de tool dat voordat je begint.

Fouten bij het splitsen en hoe je ze oplost

  • Eén record is groter dan de gekozen grootte per deel. Verhoog de maximale grootte: die moet ruimte bieden aan de kopregel plus het grootste record.
  • Deze splitsing zou meer dan 1.000 bestanden opleveren. Verhoog het aantal rijen per bestand of de grootte, of kies minder bestanden.
  • Deze kolom heeft meer dan 1.000 verschillende waarden. Splits op een bredere kolom, zoals regio in plaats van klant, of filter het bestand eerst.
  • Een waarde tussen aanhalingstekens wordt nooit afgesloten. Ergens in het bestand wordt een aanhalingsteken geopend en niet gesloten, waardoor de rest van het bestand één record zou worden. Zoek het op met CSV valideren.

Grote bestanden en privacy

Splitsen is niet beperkt tot 25 MB. Van een groter bestand zie je een voorbeeld van de eerste 200 rijen, en bij het splitsen wordt het hele bestand in stukken van 8 MB gelezen, zodat het geheugengebruik laag blijft. De delen worden als bestandsgegevens in de browser bewaard tot je ze downloadt; de praktische grens is de vrije opslagruimte die je browser mag gebruiken.

Het splitsen gebeurt in een achtergrondproces in dit tabblad, en met Annuleren stop je het. Het bestand wordt nooit naar een server gestuurd. Om delen weer samen te voegen, gebruik je CSV-bestanden samenvoegen of koppelen. Wil je een bestand kleiner maken in plaats van het op te knippen, gebruik dan CSV comprimeren (gzip of ZIP).

Voorbeeld: een orderexport gesplitst in delen van 2 rijen

Een kleine orderexport met CRLF-regeleinden (hier als gewone nieuwe regels weergegeven) en een notitie over twee regels, gesplitst in delen van 2 rijen met herhaalde kopregel. Het regeleinde tussen aanhalingstekens blijft binnen order A2, en het laatste record, dat in de invoer geen regeleinde had, krijgt het CRLF-regeleinde van het bestand.

CSV
order_id,region,note
A1,West,ok
A2,East,"two
lines"
A3,West,"a, b"
A4,,late
A5,east,ok
3 bestanden
orders-part-001.csv (2 rows)
order_id,region,note
A1,West,ok
A2,East,"two
lines"

orders-part-002.csv (2 rows)
order_id,region,note
A3,West,"a, b"
A4,,late

orders-part-003.csv (1 row)
order_id,region,note
A5,east,ok

Vragen en antwoorden

Opent elk deel goed in Excel?

Ja, als het origineel dat ook deed: elk deel heeft dezelfde kopregel, hetzelfde scheidingsteken en dezelfde codering, en houdt de UTF-8-byte order mark als het origineel die had.

Kan ik op een kolom splitsen zonder kopregel?

Nee. De eerste rij wordt altijd als kopregel gelezen, en je kiest de kolom op zijn naam. Voeg eerst een kopregel toe, bijvoorbeeld in de CSV-editor.

Waarom kreeg ik minder bestanden dan ik vroeg?

‘Aantal bestanden’ zet in elk deel hetzelfde aantal rijen, naar boven afgerond, dus de rijen kunnen op zijn voordat het laatste bestand aan de beurt is. 10 rijen over 4 bestanden geeft 3, 3, 3 en 1; 10 rijen over 6 bestanden geeft vijf bestanden van 2.

Standaarden en bronnen