La base hausse les épaules — le validateur met des noms
Un import qui échoue s'explique rarement de lui-même. Le chargeur signale une erreur de syntaxe vers telle ligne, ou pire, charge la moitié du fichier puis s'arrête, et il ne reste plus qu'à deviner entre encodages, séparateurs et styles de guillemets. Le premier geste n'est donc pas la réparation mais le diagnostic — lancez la validation structurelle et obtenez une liste de défauts numérotés — lignes mal formées, guillemets non fermés, colonnes qui ne cadrent pas avec l'en-tête. Un fichier qui valide proprement mais refuse quand même de se charger a un problème d'en-têtes ou de doublons, soit exactement ce que traitent les deux étapes suivantes. Un fichier qui ne valide pas proprement fait d'abord corriger ou sauter consciemment ses lignes dépareillées, car chaque outil en aval se fie à la structure qu'on lui remet.
Les en-têtes sont le contrat
La table cible est le contrat ; la première ligne du fichier est la négociation. Les exports externes arrivent avec Customer ID en janvier, userid en février, et CUSTID dès qu'une autre équipe produit le rapport. La résolution des en-têtes mappe chacun de ces noms vers les vraies colonnes du schéma cible, en mariant l'appariement automatique par couches et un dictionnaire explicite d'alias pour les noms déjà connus comme peu fiables. Le livrable de cette étape est une table de correspondance où chaque colonne du schéma est alimentée par exactement un en-tête source — rien d'oublié, rien de réclamé deux fois. Une colonne non mappée devient des NULL silencieux après chargement ; une colonne réclamée par deux signifie qu'un champ en écrase tranquillement un autre. Les deux défauts coûtent moins cher sur l'écran de mappage que dans une requête trois semaines plus tard.
Les doublons sont une décision, pas un accident
Les lignes dupliquées d'un fichier d'import sont rarement des accidents — ce sont des réexportations, des formulaires soumis deux fois, ou deux personnes qui saisissent le même client. Voilà pourquoi la déduplication relève d'une politique déclarée plutôt que d'un réflexe. La correspondance exacte est le défaut honnête — elle supprime les lignes figurant deux fois à l'identique et ne touche jamais celles qui ne font que se ressembler. L'approximative mérite sa place quand le fichier a été saisi à la main et que des espaces ou des majuscules séparent de vrais jumeaux — et elle doit être consignée, car « nous avons retiré 340 lignes » ne se défend que si le critère est consigné par écrit. L'arithmétique des lignes se boucle à cette étape — lignes sources, moins doublons, moins lignes mal formées sautées, égalent ce que l'étape suivante émettra.
Deux sorties — des INSERT vérifiables ou un TSV massif
L'artefact final suit la voie de chargement. Les instructions INSERT par lots conviennent au chargement modéré et passé en revue — elles portent l'inférence de types, visent MySQL, PostgreSQL, SQLite ou SQL Server et déclarent une stratégie de conflits, ON CONFLICT ou IGNORE, de sorte qu'une relance ne double rien. Elles se lisent en revue de code, entrent dans le gestionnaire de versions et se rejouent à la demande. La sortie TSV sert le chargeur massif natif — les voies COPY et LOAD DATA absorbent un fichier propre à séparateurs tabulation bien plus vite qu'aucun flux d'instructions, et la conversion de dialecte traite les champs entre guillemets et les séparateurs incrustés pour que le TSV reste sûr à analyser. Une mise en garde s'impose — le chargeur massif ne réglera pas vos conflits, donc un fichier susceptible de contenir des relances appartient à la voie INSERT, là où vit la stratégie de conflits.
Où ce flux s'arrête
Cette page répare un CSV externe qu'une base de données refuse et l'accompagne jusqu'à son premier chargement réussi. Quand la tâche dépasse ce cadre, confiez-la aux voisins. Les sources qui arrivent en classeurs, ou une remise qui doit tourner sans surveillance chaque semaine, relèvent du flux d'ingestion ETL. Les valeurs suspectes, les valeurs aberrantes et les preuves de qualité pour étayer une discussion relèvent de l'enquête qualité des données. Filtrer, grouper et remodeler une table qui se charge déjà bien relève du flux d'utilitaires CSV, et concevoir ou migrer le schéma lui-même relève des pages de migration de schéma de base. Réparez d'abord — et quand la besogne devient routine, promouvez-la en pipeline.