ForHosting KIT · Données et fichiers

Valider un CSV avec un schéma de colonnes et repérer les erreurs

Un fichier CSV peut sembler ordonné tout en contenant des valeurs qui bloquent un import, un rapport ou un pipeline de données.

● BetaGratuit · dans votre navigateur
Utilisez-le depuis WebAPIE-mailTelegramApp bientôt

Tout se passe dans votre navigateur : gratuit, sans envoi de vos données.

Ce validateur compare l’en-tête aux colonnes exactes que vous attendez, puis contrôle chaque ligne selon des règles explicites pour les chaînes, nombres, entiers, booléens et dates ISO. Au lieu de s’arrêter à la première cellule erronée, il renvoie la liste complète des violations avec les numéros de ligne et les noms de colonne. Exécutez-le gratuitement dans le navigateur ou utilisez l’API pour $0.002 par requête dans un processus automatisé.

Définissez le contrat avant de contrôler le fichier

Décrivez chaque colonne attendue avec trois propriétés : son nom exact, son type et son caractère obligatoire. L’ordre compte, car les données CSV sont positionnelles ; un en-tête nom,id n’est pas interchangeable sans risque avec id,nom, même si les deux noms sont présents. Le validateur compare donc l’en-tête complet au schéma avant d’examiner les lignes. Toute colonne absente, supplémentaire, renommée, dupliquée ou déplacée provoque une erreur d’entrée plutôt qu’un rapport trompeur. Les types pris en charge sont string, number, integer, boolean et date. Les nombres acceptent les notations décimale et scientifique, les entiers doivent être des nombres entiers sûrs, les booléens acceptent true ou false sans tenir compte de la casse et les dates suivent YYYY-MM-DD avec contrôle du calendrier. Une chaîne accepte toute valeur non vide, tandis que required détermine séparément si une cellule vide est permise. Ainsi, un entier facultatif peut être vide, mais toute valeur présente doit rester un entier valide.

Interprétez précisément les violations

Le résultat commence par l’indicateur valid et par les totaux de lignes, de colonnes et de violations. Lorsque valid vaut false, le tableau violations décrit chaque problème avec un numéro de ligne, un nom de colonne, un code stable et un message lisible. La numérotation suit le CSV : la ligne 1 correspond à l’en-tête et le premier enregistrement se trouve à la ligne 2. Vous pouvez ainsi ouvrir le fichier source et accéder directement à l’emplacement signalé. Une violation required indique qu’une cellule obligatoire est vide. Une violation type indique qu’une valeur présente ne respecte pas le type déclaré. Les lignes qui comportent trop ou trop peu de champs reçoivent column_count sous la colonne spéciale _row, car le défaut structurel ne peut pas être rattaché sûrement à une cellule nommée. Le parseur gère les virgules entre guillemets, les guillemets échappés, les retours à la ligne intégrés et les fichiers CRLF ; la ponctuation légitime ne décale donc pas les colonnes suivantes.

Placez la validation à l’entrée du processus

Validez le fichier aussi près que possible de son point d’entrée dans votre système. Vous pouvez refuser le dépôt d’un partenaire avant son arrivée en base de données, vérifier un export planifié avant les calculs en aval ou présenter toutes les cellules à corriger dans un outil d’import. L’algorithme étant déterministe et sans accès réseau, le même CSV associé au même schéma produit toujours le même rapport. La sortie convient donc aux contrôles automatiques comme aux corrections interactives. Distinguez une discordance d’en-tête des violations de ligne : la première signifie que le fichier n’est pas le jeu de données attendu, tandis que les secondes concernent des enregistrements reconnaissables à corriger. Le validateur ne fait que signaler les écarts ; il ne modifie, ne convertit, ne raccourcit et ne remplace jamais les valeurs. Si votre pipeline exige une normalisation, effectuez-la dans une étape distincte, puis validez de nouveau selon le contrat réellement demandé par la destination.

Contrôle qualité avant import

Refusez les fichiers CSV de clients ou partenaires avec des références précises de ligne et de colonne avant leur import en base.

Surveillance des exports

Contrôlez les exports récurrents pour détecter les changements d’en-tête, les champs obligatoires vides et les types devenus invalides.

Correction groupée

Renvoyez toutes les violations détectables à la fois afin qu’une personne corrige le fichier en une seule passe.

L’en-tête CSV doit-il suivre le même ordre que le schéma ?

Oui. Les noms et leur ordre doivent correspondre exactement, sinon la requête échoue avec une erreur d’entrée sur l’en-tête.

Quels types de colonnes sont acceptés ?

Le schéma accepte string, number, integer, boolean et date. Les dates doivent être des jours réels au format YYYY-MM-DD.

La validation s’arrête-t-elle à la première ligne incorrecte ?

Non. Une fois l’en-tête accepté, toutes les lignes sont contrôlées et toutes les violations détectées sont renvoyées ensemble.

Comment les virgules et retours à la ligne entre guillemets sont-ils traités ?

Les champs cités peuvent contenir des virgules, des guillemets doubles échappés et des retours à la ligne sans créer de colonnes supplémentaires.

Cet outil modifie-t-il ou convertit-il les valeurs CSV ?

Non. Il signale uniquement les violations et ne tronque, ne convertit, ne complète ni ne réécrit jamais le CSV fourni.

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.

POSThttps://api.kit.forhosting.com/data/csv-validate-schema

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é.

curl -X POST https://api.kit.forhosting.com/data/csv-validate-schema \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"csv":"id,email,active\n1,ada@example.com,true\n2,grace@example.com,false","schema":[{"name":"id","type":"integer","required":true},{"name":"email","type":"string","required":true},{"name":"active","type":"boolean","required":true}]}'
{
  "csv": "id,email,active\n1,ada@example.com,true\n2,grace@example.com,false",
  "schema": [
    {
      "name": "id",
      "type": "integer",
      "required": true
    },
    {
      "name": "email",
      "type": "string",
      "required": true
    },
    {
      "name": "active",
      "type": "boolean",
      "required": true
    }
  ]
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "data.csv_validate_schema",
  "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.

par requête$0.002

Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.

max_mb25
HTTPCodeSignification
401unauthorizedClé API absente ou invalide : vérifiez l’en-tête Authorization.
402insufficient_balanceSolde insuffisant : rechargez votre compte pour lancer cette tâche.
404unknown_typeType de tâche inconnu : vérifiez le champ type de votre requête.
429rate_limitedTrop de requêtes : ralentissez la cadence, puis réessayez.

Consulter la documentation complète du KIT →