Fusionner plusieurs CSV
Cet outil réunit plusieurs fichiers CSV en un seul, en alignant les colonnes par leur nom d’en-tête, même si l’ordre change d’un fichier à l’autre. Chaque ligne des sources est empilée dans le fichier final. Pratique pour rassembler des exports mensuels, régionaux ou de plusieurs équipes.
Lancer gratuitement
Tout se passe dans votre navigateur : gratuit, sans envoi de vos données.
L’alignement par nom de colonne
Le point délicat d’une fusion, c’est que les fichiers ne rangent pas toujours leurs colonnes dans le même ordre. L’outil s’appuie sur le nom des en-têtes, non sur leur position : une colonne « e-mail » ira dans la bonne case, qu’elle soit en première ou en cinquième position dans le fichier d’origine. Vous évitez ainsi le décalage classique qui mélange des données lorsqu’on empile bêtement des fichiers.
Quand les en-têtes diffèrent
Il arrive qu’un fichier possède une colonne absente des autres. Plutôt que de la perdre, l’outil conserve toutes les colonnes rencontrées et laisse vides les cellules pour les fichiers qui ne la renseignent pas. Vous gardez ainsi l’intégralité de l’information. À vous ensuite de vérifier les en-têtes qui devraient être identiques mais ne le sont qu’à un espace ou une majuscule près.
Empiler des lignes, pas les croiser
Cette fusion empile les lignes les unes sous les autres : elle rassemble, elle ne fait pas de rapprochement entre fichiers sur une clé commune. C’est ce qu’on attend pour réunir des exports de même nature. Toute l’opération se déroule dans votre navigateur, sur cette page ; les fichiers ne sont pas envoyés sur un serveur, ce qui convient à des données clients ou commerciales.
Cas d’usage
Regrouper des exports mensuels
Atelier Garnier SARL réunit douze exports de ventes, un par mois, en un seul fichier annuel prêt à analyser, sans copier-coller manuel.
Consolider plusieurs régions
Studio Lumen SAS rassemble les fichiers de contacts de trois agences dont les colonnes ne sont pas dans le même ordre, en un tableau unique et cohérent.
Réunir le travail de plusieurs personnes
Sophie Nguyen fusionne les CSV remplis séparément par son équipe, chacun avec ses colonnes, en une base commune.
Questions fréquentes
Que se passe-t-il si les colonnes ne sont pas dans le même ordre ?
L’alignement se fait par nom d’en-tête, pas par position : chaque colonne rejoint la bonne, quel que soit son rang dans le fichier d’origine.
Et si un fichier a une colonne que les autres n’ont pas ?
Elle est conservée dans le résultat, et les cellules restent vides pour les fichiers qui ne la renseignent pas.
L’outil rapproche-t-il les fichiers sur une clé commune ?
Non. Il empile les lignes les unes sous les autres ; il ne réalise pas de jointure entre fichiers.
Mes fichiers sont-ils envoyés sur un serveur ?
Non, la fusion a lieu dans votre navigateur ; aucune donnée n’est transmise ni conservée.
Est-ce gratuit ?
Oui, sans limite dans le navigateur. Un appel programmable existe à $0.002 la requête pour automatiser des fusions régulières.
Quelle taille de fichiers puis-je fusionner ?
Chaque fichier peut aller jusqu’à 25 Mo.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/data/merge-csv \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"…"}'const res = await fetch("https://api.kit.forhosting.com/data/merge-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/merge-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/merge-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/merge-csv", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"text": "…"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.merge_csv",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_mb | 25 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |