Om CSV-bestanden samen te voegen, voeg je twee of meer bestanden toe en kies je hoe ze worden gecombineerd. Rijen onder elkaar zetten plakt de rijen van alle bestanden in één tabel en stemt de kolommen af op kolomnaam: een kolom die maar in een paar bestanden voorkomt, blijft bestaan en is in de andere rijen leeg. Dat bedoelen de meeste mensen als ze maand- of regio-exports samenvoegen. Koppelen op sleutel zet twee bestanden naast elkaar op basis van een of meer sleutelkolommen, zoals VERT.ZOEKEN in een spreadsheet, en vertelt je hoeveel rijen gekoppeld zijn, welke sleutels herhaald worden en hoeveel extra rijen dat opleverde. De samengevoegde tabel wordt bijgewerkt terwijl je de opties aanpast, en de bestanden worden in je browser samengevoegd, nooit geüpload.
Zo voeg je CSV-bestanden samen
- Voeg de bestanden toe. Van elk bestand worden het scheidingsteken en de codering herkend, en de eerste rij geldt als kopregel. De lijst toont per bestand het aantal rijen en de eerste kolommen; verplaats bestanden omhoog of omlaag om de volgorde te bepalen.
- Kies ‘Rijen onder elkaar zetten’ om de rijen van alle bestanden na elkaar te plaatsen, of ‘Koppelen op sleutel’ om de rijen van de eerste twee bestanden aan elkaar te koppelen.
- Bekijk het voorbeeld en de meldingen erboven, en download het resultaat als CSV of open het in de CSV-editor om verder te werken.
Rijen volgen de volgorde van de bestandenlijst: eerst alle rijen van het eerste bestand, dan alle rijen van het tweede, enzovoort. Wil je veel maandexports samenvoegen, bijvoorbeeld transactieoverzichten van je bank? Voeg ze allemaal tegelijk toe en zet de bronkolom aan, zodat bij elke rij te zien blijft uit welk bestand hij komt.
Onder elkaar zetten: bestanden met verschillende kolommen
Bij onder elkaar zetten kun je de kolommen op drie manieren afstemmen. Kies de manier die past bij hoe je bestanden verschillen.
| Op naam (alle kolommen blijven), de standaard | Het resultaat bevat elke kolomnaam uit elk bestand, in de volgorde waarin ze voor het eerst voorkomen. Een rij uit een bestand zonder die kolom krijgt daar een lege waarde. Namen moeten precies overeenkomen: SKU en sku worden twee kolommen. |
|---|---|
| Zelfde kolommen verplicht | Stopt met een foutmelding die het eerste bestand noemt waarvan de kolomnamen in naam, aantal of volgorde afwijken. Gebruik dit als elk bestand uit dezelfde export hoort te komen en een hernoemde kolom betekent dat er iets mis is gegaan. |
| Op positie | Kolom 1 komt onder kolom 1, enzovoort. De kolomnamen komen uit het bestand met de meeste kolommen; kortere bestanden krijgen aan het eind lege waarden. Gebruik dit alleen als de bestanden geen bruikbare kopregel hebben, of dezelfde indeling onder andere namen. |
| Kolom met de bestandsnaam toevoegen | Voegt een laatste kolom toe, source_file tenzij je de naam wijzigt, met de bestandsnaam van elke rij. Die naam mag nog niet als kolomnaam voorkomen. |
| Exact herhaalde rijen verwijderen | Haalt na het onder elkaar zetten elke rij weg die gelijk is aan een eerdere rij, en meldt hoeveel er zijn verwijderd. Het eerste exemplaar blijft staan. Waarden moeten precies overeenkomen, inclusief hoofdletters en spaties. De bronkolom telt niet mee, dus dezelfde rij in twee bestanden geldt als dubbel. |
Afstemmen op positie zet waarden onder de verkeerde kolomnaam als één bestand een extra of verplaatste kolom heeft: in het voorbeeld hieronder zou qty van april onder name belanden. Afstemmen op naam voorkomt dat, zolang de bestanden kolomnamen hebben.
Koppelen: twee bestanden combineren op een sleutel
Koppelen gebruikt de eerste twee bestanden in de lijst als links en rechts. Kies een of meer paren sleutelkolommen; elk paar mag verschillende namen hebben, zoals customer_id links en id rechts. Bij meerdere paren is een rij pas gekoppeld als elk paar overeenkomt.
| Alle rijen van het eerste bestand (left join, standaard) | Elke rij van links, met de kolommen van rechts ingevuld waar de sleutel overeenkwam en leeg waar dat niet zo was. |
|---|---|
| Alleen rijen die in beide voorkomen (inner join) | Alleen de rijen van links waarvan de sleutel in het rechterbestand voorkomt. |
| Alle rijen van het tweede bestand (right join) | Elke rij van rechts: gekoppelde rijen in de volgorde van het linkerbestand, gevolgd door rijen van rechts zonder koppeling. |
| Alle rijen van beide bestanden (full join) | Elke rij uit beide bestanden: het resultaat van de left join, gevolgd door rijen van rechts zonder koppeling. |
| Hoofdletters en omringende spaties in sleutels negeren | C02 komt overeen met c02. In het resultaat staat de sleuteltekst uit het linkerbestand. |
Het resultaat bevat alle kolommen van links, en daarna de kolommen van het rechterbestand behalve de sleutelkolommen. Een kolom van rechts waarvan de naam al bestaat, krijgt (2) erachter, bijvoorbeeld total (2), en de meldingen noemen de hernoemde kolommen. Bij een rij van rechts zonder koppeling wordt de sleutel in de sleutelkolom van links gezet en blijven de andere kolommen van links leeg.
Komt een sleutel meer dan één keer voor in het rechterbestand, dan wordt elke passende rij van links één keer per koppeling herhaald. De meldingen tellen de gekoppelde rijen, de rijen die alleen links of alleen rechts voorkomen, de herhaalde sleutels aan elke kant en de extra rijen die daardoor zijn ontstaan. Zo zie je meteen wanneer een opzoeking die één-op-één hoort te zijn, dat niet is.
Waarden, kolomnamen en verschillende scheidingstekens
- Waarden zijn tekst en blijven precies zoals ze er staan, dus
00123houdt zijn voorloopnullen. Ook sleutels worden als tekst vergeleken:00123en123komen niet overeen, ook niet als hoofdletters en spaties worden genegeerd. - Scheidingstekens, aanhalingstekens en regeleinden binnen een waarde tussen aanhalingstekens worden gelezen volgens RFC 4180 en in de download waar nodig weer tussen aanhalingstekens gezet.
- Binnen één bestand wordt een lege kolomnaam
Column 3en een dubbele kolomnaamname (2). Die gegenereerde namen doen bij afstemmen op naam gewoon mee. - Bestanden mogen verschillende scheidingstekens en coderingen hebben; die worden per bestand herkend. De download gebruikt komma’s, en de regeleinden en codering volgen het eerste bestand in de lijst. Coderingen die een browser niet kan schrijven, zoals Shift_JIS, worden als UTF-8 opgeslagen.
Problemen bij samenvoegen en koppelen
- Kolommen verschijnen twee keer met net iets andere namen. De bestanden schrijven een kolomnaam verschillend (
Emailenemail, of met een spatie achteraan). Hernoem er een met CSV-kolommen hernoemen en herschikken voordat je samenvoegt, of stem af op positie als de indelingen gelijk zijn. - Een koppeling vindt bijna niets. Controleer of de sleutels in beide bestanden op dezelfde manier geschreven zijn: voorloopnullen, voorvoegsels en spaties tellen allemaal mee. Zet het negeren van hoofdletters en omringende spaties aan, of haal eerst de spaties uit de kolom met CSV-gegevens opschonen.
- De koppeling heeft meer rijen dan het linkerbestand. Het rechterbestand herhaalt een sleutel; de meldingen laten zien hoeveel sleutels herhaald worden en hoeveel extra rijen dat opleverde. Verwijder de dubbele rijen of kies een specifieker paar sleutels.
- De samengevoegde tabel gaat over de grens van de browser. Het resultaat mag maximaal 100.000 rijen en 2 miljoen cellen hebben. Filter eerst de invoer, of voeg minder bestanden tegelijk samen.
Limieten en privacy bij het samenvoegen
Elk bestand mag tot 25 MB, 100.000 rijen, 250 kolommen en 2 miljoen cellen groot zijn, en voor het samengevoegde of gekoppelde resultaat gelden dezelfde 100.000 rijen en 2 miljoen cellen. Samenvoegen gebeurt niet in delen: elk bestand wordt in het geheugen geladen.
Bestanden worden in een achtergrondproces in dit tabblad gelezen en in je browser samengevoegd. Ze worden nooit naar een server gestuurd. Wil je zien wat er tussen twee versies van een bestand is veranderd in plaats van ze te combineren, gebruik dan CSV-bestanden vergelijken. Om één bestand in stukken te knippen, gebruik je CSV-bestanden splitsen.
Voorbeeld: twee voorraadbestanden met verschillende kolommen onder elkaar
Twee voorraadexports met verschillende kolommen, onder elkaar gezet op kolomnaam met de bronkolom aan. name en warehouse komen maar in één bestand voor, dus de rijen van het andere bestand zijn daar leeg, en de SKU’s houden hun voorloopnullen.
march.csv sku,name,qty 00123,"Desk lamp, brass",4 00456,Shelf,2 april.csv sku,qty,warehouse 00789,10,North 00456,2,
sku,name,qty,warehouse,source_file 00123,"Desk lamp, brass",4,,march.csv 00456,Shelf,2,,march.csv 00789,,10,North,april.csv 00456,,2,,april.csv
Vragen en antwoorden
Kan ik meer dan twee bestanden koppelen?
Niet in één stap. Koppelen gebruikt de eerste twee bestanden in de lijst. Download of open het resultaat en koppel het daarna aan het volgende bestand. Onder elkaar zetten heeft die grens niet en verwerkt elk bestand dat je toevoegt.
Vergelijkt het verwijderen van dubbele rijen alleen een sleutelkolom?
Nee. Een rij wordt alleen verwijderd als elke waarde precies overeenkomt met een eerdere rij. Wil je één rij per id houden, haal het resultaat dan door CSV-gegevens opschonen en verwijder daar de dubbele rijen op sleutelkolom.
Waarom kwamen bij afstemmen op positie waarden onder de verkeerde kolomnaam?
Op positie negeert kolomnamen en neemt de kolomnamen over uit het bestand met de meeste kolommen. Heeft één bestand een kolom die de andere missen, dan schuiven alle latere waarden op. Kies afstemmen op naam.