O banco dá de ombros — o validador cita nomes
Um import que falha raramente se explica. O carregador informa um erro de sintaxe perto de tal linha, ou pior, carrega metade do arquivo e para, e quem opera fica adivinhando entre codificações, separadores e estilos de aspas. Por isso o primeiro movimento não é consertar, e sim diagnosticar — rode a validação estrutural e obtenha uma lista de defeitos com números de linha — linhas malformadas, aspas não fechadas, colunas que não batem com o cabeçalho. Um arquivo que valida limpo e ainda assim não carrega tem um problema de cabeçalhos ou de duplicatas, exatamente o que os dois passos seguintes tratam. Um arquivo que não valida limpo põe primeiro suas linhas tortas em ordem ou as pula conscientemente, porque toda ferramenta adiante confia na estrutura de linhas que recebe.
Cabeçalhos são o contrato
A tabela de destino é o contrato; a primeira linha do arquivo é a negociação. Exportações externas chegam com Customer ID em janeiro, userid em fevereiro e CUSTID sempre que outro time gera o relatório. A resolução de cabeçalhos mapeia cada um desses nomes para as colunas reais do esquema de destino, casando o emparelhamento automático em camadas com um dicionário explícito de alias para os nomes já conhecidos como pouco confiáveis. A entrega deste passo é um mapeamento em que cada coluna do esquema é alimentada por exatamente um cabeçalho de origem — nada descoberto, nada disputado por dois. Uma coluna sem mapeamento vira NULLs silenciosos após a carga; uma disputada por dois significa um campo sobrescrevendo calado o outro. Os dois defeitos saem mais baratos na tela de mapeamento do que numa consulta três semanas depois.
Duplicatas são uma decisão de política
Linhas duplicadas num arquivo de import quase nunca são acidentes — são reexportações, formulários enviados duas vezes, ou duas pessoas digitando o mesmo cliente. Por isso a deduplicação pertence a uma política declarada, não a um reflexo. A correspondência exata é o padrão honesto — remove as linhas que aparecem duas vezes idênticas e nunca toca nas que apenas se parecem. A aproximada merece seu lugar quando o arquivo foi digitado à mão e espaçamento ou caixa separam gêmeos verdadeiros — e precisa ficar registrada, porque “removemos 340 linhas” só se defende quando o critério está em ata. A aritmética de linhas fecha neste passo — linhas de origem, menos duplicatas, menos linhas malformadas puladas, igualam o que o passo seguinte emitirá.
Duas saídas — INSERTs revisáveis ou TSV em massa
O artefato final segue o caminho de carga. Instruções INSERT em lote servem à carga moderada e revisada — trazem inferência de tipos, miram MySQL, PostgreSQL, SQLite ou SQL Server e declaram uma estratégia de conflitos, ON CONFLICT ou IGNORE, de modo que reexecutar nada duplica. Podem ser lidas numa revisão de código, entram no controle de versão e são reexecutadas quando precisar. A saída TSV serve ao carregador massivo nativo — os caminhos COPY e LOAD DATA devoram um arquivo limpo separado por tabulações muito mais rápido do que qualquer fluxo de instruções, e a conversão de dialeto cuida dos campos entre aspas e dos separadores embutidos para que o TSV continue seguro de analisar. Vale um aviso — o carregador massivo não resolve conflitos por você, então um arquivo que pode conter reexecuções pertence ao caminho INSERT, onde mora a estratégia de conflitos.
Onde este fluxo para
Esta página repara um CSV externo que um banco de dados recusa e o acompanha até a primeira carga bem-sucedida. Quando a tarefa cresce além disso, entregue-a aos vizinhos. Fontes que chegam como pastas de trabalho, ou uma entrega que precisa rodar sem supervisão toda semana, pertencem ao fluxo de ingestão ETL. Valores suspeitos, atípicos e evidências de qualidade para sustentar uma discussão pertencem à investigação de qualidade de dados. Filtrar, agrupar e remodelar uma tabela que já carrega bem pertence ao fluxo de utilidades CSV, e projetar ou migrar o próprio esquema pertence às páginas de migração de esquema de banco. Repare primeiro — e quando a tarefa virar rotina, promova-a a pipeline.