Doppelte Zeilen aus CSV entfernen
Ein Werkzeug, das doppelte Zeilen aus einer CSV-Datei entfernt, entweder bei vollständig identischem Inhalt oder nach ausgewählten Spalten wie einer Kundennummer, ganz ohne eigene Filterformel. Gedacht für alle, die eine zusammengeführte oder mehrfach exportierte Tabelle vor der Weiterverarbeitung bereinigen möchten.
Im Browser ausführen – kostenlos
Läuft direkt in Ihrem Browser – kostenlos. Ihre Datei verlässt Ihren Browser nicht und wird an keinen Server übertragen.
Exakte Duplikate oder ausgewählte Spalten
Standardmäßig gilt eine Zeile als Duplikat, wenn alle Spaltenwerte exakt übereinstimmen. Alternativ lässt sich festlegen, dass nur ausgewählte Spalten für den Vergleich zählen, etwa nur die Kundennummer, auch wenn sich andere Spalten wie ein Zeitstempel zwischen den Zeilen unterscheiden. So bestimmen Sie selbst, was in Ihrem konkreten Fall überhaupt als Duplikat gilt und was nicht, ganz nach Bedarf und Kontext.
Welche Zeile erhalten bleibt
Werden mehrere gleiche Zeilen gefunden, bleibt standardmäßig die erste im Ergebnis erhalten, alle weiteren werden entfernt. Die ursprüngliche Reihenfolge der übrigen Zeilen bleibt dabei unverändert, sodass sich das Ergebnis leicht mit der Ausgangsdatei vergleichen lässt, auch wenn dazwischen einzelne Zeilen entfernt wurden und somit im Ergebnis fehlen und nicht mehr auftauchen können, was beabsichtigt ist und dem Zweck der Bereinigung dient.
Ein Unterschied zur ähnlichkeitsbasierten Suche
Diese Funktion erkennt ausschließlich exakte Übereinstimmungen der verglichenen Spalten. Zeilen, die inhaltlich dasselbe meinen, sich aber in der Schreibweise unterscheiden, etwa durch einen Tippfehler im Firmennamen, werden hier nicht erkannt; dafür gibt es die semantische Duplikatsuche als eigene, auf Ähnlichkeit statt exakter Übereinstimmung ausgelegte Funktion für genau diesen speziellen, in der Praxis sehr häufigen und oft lange übersehenen, teuren Fall.
Wo Sie es nutzen
Die Entfernung läuft im Browser, kostenlos und ohne Limit, ohne dass die Datei übertragen wird. Über die API lässt sich derselbe Schritt automatisieren, etwa direkt nach dem Zusammenführen mehrerer Exportdateien, bevor das Ergebnis in eine Anwendung oder Datenbank importiert wird, ohne manuellen Kontrollschritt dazwischen einzuschieben oder gänzlich zu vergessen, jedes einzelne Mal wieder ganz von Neuem und ohne zusätzlichen Aufwand für Ihr Team.
Anwendungsfälle
Zusammengeführte Lieferantenliste bereinigen
Weber Metallbau GmbH entfernt exakte Duplikate aus einer zusammengeführten Lieferantenliste mehrerer Standorte, bevor sie ins Warenwirtschaftssystem importiert wird.
Adressliste vor einem Mailing
Katrin Baumann entfernt doppelte Einträge aus einer zusammengetragenen Adressliste, bevor sie einen Serienbrief an alle Kontakte verschickt.
Exportierte Protokollzeilen bereinigen
Thomas Müller entfernt doppelte Zeilen aus exportierten Protokolldaten, bevor er sie für eine Auswertung weiterverarbeitet.
Häufige Fragen
Kann ich festlegen, welche Spalten für den Vergleich zählen?
Ja, statt der gesamten Zeile lassen sich auch nur ausgewählte Spalten für den Duplikatsvergleich verwenden.
Welche der doppelten Zeilen bleibt im Ergebnis erhalten?
Standardmäßig die erste im Vorkommen; die übrige Reihenfolge der Datei bleibt dabei unverändert.
Erkennt die Funktion auch ähnliche, aber nicht identische Zeilen?
Nein, dafür gibt es die semantische Duplikatsuche als eigene Funktion. Diese hier erkennt ausschließlich exakte Übereinstimmungen.
Gibt es ein Limit für die Dateigröße?
Die CSV-Datei darf bis zu 25 MB groß sein.
Ist die Entfernung kostenlos?
Ja, im Browser läuft sie kostenlos und ohne Limit. Nur die Nutzung über die API kostet $0.002 pro Anfrage.
Brauche ich ein Konto?
Nein, weder im Browser noch über die API ist ein Konto erforderlich.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/data/dedupe-csv \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"…"}'const res = await fetch("https://api.kit.forhosting.com/data/dedupe-csv", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/data/dedupe-csv",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/data/dedupe-csv", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/data/dedupe-csv", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"text": "…"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.dedupe_csv",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Limits
max_mb | 25 |
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |