Interface de mapeamento de colunas para importação CSV: correspondência mais segura, padrões e pré-visualização
Padrões de UI para mapeamento de colunas em importação CSV: ajude usuários a combinar campos, definir padrões, pré-visualizar erros e corrigir dados antes de gravar.

Por que importações CSV são frustrantes
A maioria das pessoas encara uma importação CSV com uma esperança simples: “Só quero minha planilha no app.” Então a primeira tela pede decisões que elas não entendem, e a importação falha por motivos que parecem aleatórios.
Arquivos CSV costumam ser mais bagunçados do que parecem. Cabeçalhos podem faltar, estar escritos de forma diferente dos seus campos ou duplicados ("Email", "email", "Email Address"). Datas podem vir em formatos estranhos, telefones perdem zeros à esquerda, e vírgulas dentro de endereços quebram colunas. Mesmo exportações “limpas” às vezes incluem colunas extras como notas, IDs internos ou colunas vazias no final.
O medo é real: se você errar ao mapear, isso vai sobrescrever dados bons, criar centenas de registros quebrados ou espalhar lixo pelo sistema? Uma boa interface de mapeamento de colunas para importação CSV remove essa ansiedade ao mostrar o que vai acontecer antes de qualquer gravação.
"Mapear" é só combinar. Significa: esta coluna do CSV vai para este campo no seu app. Por exemplo, a coluna CSV "Company" mapeia para o campo "Account name", e "Start Date" mapeia para "Customer since". Simples na teoria, mas fácil de errar quando os nomes não batem.
Uma importação mais segura define expectativas claras e segue uma ordem previsível:
- Combinar colunas com campos (mapeamento)
- Escolher o que fazer quando faltar dado (valores padrão)
- Verificar problemas (validação)
- Mostrar o resultado (pré-visualização)
- Só então gravar registros
Quando os usuários entendem essa sequência, importações deixam de dar a sensação de armadilha. Viram um checklist guiado: faça os mapeamentos, preencha as lacunas, corrija os erros visíveis e importe com confiança.
O que uma boa tela de mapeamento precisa fazer
Uma UI de mapeamento de colunas para importação CSV tem um trabalho: deixar óbvio o que vai acontecer antes de qualquer gravação. Usuários não devem ter que adivinhar se você está criando registros novos, atualizando existentes ou pulando linhas.
A tela deve responder claramente a estas perguntas:
- O que será criado (registros novos) e em qual tabela ou objeto
- O que será atualizado, e qual campo será usado para localizar correspondências (como email ou external ID)
- O que será pulado, e por quê (faltam campos obrigatórios, duplicatas, valores inválidos)
- Quantas linhas são afetadas em cada grupo, usando contagens reais do arquivo enviado
- O que o sistema fará se um valor estiver em branco (deixar vazio, usar um padrão, manter valor existente)
Campos obrigatórios precisam de tratamento especial. Mostre-os no topo, marque como obrigatórios e impeça o usuário de finalizar o mapeamento até que cada campo obrigatório esteja mapeado ou tenha um padrão explícito. Campos opcionais podem ficar sem mapeamento, mas a UI ainda deve indicar o que o usuário está optando por ignorar.
As pessoas também esperam limpeza básica sem escrever fórmulas. Ofereça transformações simples já onde o mapeamento acontece, como remover espaços extras, converter formatos numéricos e escolher um formato de data. Por exemplo, se um CSV tem " New York ", uma opção de trim deve mostrar que vira "New York" na pré-visualização.
Nem todo problema deve interromper a importação. Separe problemas em bloqueadores e avisos, e explique a diferença em palavras simples.
- Bloquear quando faltar um campo obrigatório, uma data não puder ser interpretada, ou a chave de correspondência para atualização estiver vazia
- Avisar quando um telefone estiver em formato estranho, um valor for truncado, ou um campo for desconhecido e será ignorado
- Permitir a importação quando houver avisos, mas mostrar quantas linhas serão afetadas
Se você acertar esses pontos básicos, o resto do fluxo de importação fica mais calmo: usuários se sentem no controle e você recebe menos tickets de suporte “por que importou errado?”.
Ajudando usuários a combinar colunas CSV com campos
Uma boa UI de mapeamento deve parecer uma assistente útil, não um quebra-cabeça. Comece lendo a primeira linha como cabeçalhos e oferecendo sugestões de correspondência imediatamente. Use sinais simples como similaridade de nome ("email" -> "Email") e uma pequena lista de sinônimos ("Phone" vs "Mobile", "Zip" vs "Postal code", "Company" vs "Organization").
Sugestões funcionam melhor quando são discretas e claras. Marque correspondências como exatas, prováveis ou incertas. Mantenha a dica sutil (um rótulo pequeno ou ícone), para que os usuários possam escanear rapidamente sem se sentirem importunados.
Dê ao usuário uma maneira fácil de sobrescrever qualquer escolha. Um dropdown está ok, mas adicione uma busca para que possam digitar "status" e selecionar o campo certo em segundos. Se seu produto tem muitos campos, agrupe-os (Contato, Endereço, Cobrança) para a lista não ficar esmagadora.
Para evitar importações ruins acidentais, dificulte criar conflitos:
- Permita apenas uma coluna CSV por campo alvo por padrão
- Se um usuário selecionar um campo que já está mapeado, mostre um aviso claro e pergunte se deseja substituir o mapeamento existente
- Ofereça uma opção explícita de "combinar" apenas quando for suportado (por exemplo, First name + Last name)
- Destaque campos alvo obrigatórios que ainda não foram mapeados
Um pequeno exemplo: um usuário importa "Mobile" e "Phone" de uma planilha. Se ambos forem mapeados para o mesmo campo "Phone", a UI deve impedir, explicar que um sobrescreverá o outro e sugerir alternativas (mapear um para "Mobile" ou ignorar um).
Se você está construindo isso no AppMaster, mantenha a etapa de mapeamento rápida: auto-sugestão, busca e bloqueio de escolhas conflitantes. A maioria dos problemas de importação começa aqui, então menos surpresas significam dados mais limpos.
Valores padrão que evitam registros vazios ou errados
A tela de mapeamento deve fazer mais do que apenas combinar campos. Deve decidir o que fazer quando uma célula CSV estiver em branco. Se você pular isso, frequentemente acaba com registros pela metade ou, pior, dados errados que parecem válidos.
Para cada campo mapeado, ofereça uma escolha clara "Quando em branco". Mantenha isso previsível e visível na mesma linha do mapeamento, para que as pessoas não percam enquanto escaneiam.
Aqui estão os três comportamentos que a maioria das equipes precisa:
- Deixar vazio (importar a linha e o campo fica em branco)
- Usar um valor padrão (importar a linha com um fallback conhecido)
- Rejeitar a linha (falhar aquela linha e explicar por quê)
Padrões devem cobrir casos simples e comuns sem configuração extra. Exemplos: status = Active, country = US, owner = usuário atual, source = "CSV import". Em uma UI de mapeamento, esses padrões frequentemente fazem a diferença entre uma primeira importação limpa e horas de limpeza.
Um detalhe que confunde é create vs update. Se sua importação pode atualizar registros existentes (por exemplo, por email ou ID), deixe explícito como os padrões se comportam:
- No create: padrões preenchem valores ausentes para registros novos.
- No update: padrões normalmente NÃO devem sobrescrever dados existentes, a menos que o usuário escolha isso.
Uma regra prática: trate "em branco no CSV" de forma diferente de "campo não incluído". Se o usuário mapeou o campo e escolheu "Deixar vazio", ele pode querer dizer "limpar". Se ele não mapeou o campo, geralmente significa "não mexer".
Finalmente, mostre o valor padrão ao lado do campo mapeado, não escondido num ícone de configuração. Um pequeno selo inline (por exemplo, "Padrão: Active") mais uma dica curta ("Usado apenas quando vazio") evita surpresas e reduz tickets de suporte.
Pré-visualizar resultados e erros antes de gravar dados
Uma pré-visualização é o momento em que a UI de mapeamento ganha confiança. Usuários devem ver o que vai acontecer antes de qualquer gravação, e devem sentir que os problemas são compreensíveis e fáceis de corrigir.
Comece com uma pré-visualização pequena e rápida (por exemplo, as primeiras 20–50 linhas) mais um resumo simples para o arquivo completo. O resumo deve responder às perguntas que as pessoas realmente fazem: quantas linhas serão criadas ou atualizadas, quantas têm problemas e quantas serão puladas.
Torne os erros visuais e específicos. Destaque as células exatas que vão falhar e mostre um motivo curto ao lado da célula ou em um painel lateral. Se uma linha tem múltiplos problemas, mostre o primeiro claramente e permita que o usuário expanda para ver o resto.
Razões comuns para explicar em linguagem simples incluem:
- Falta de valor obrigatório (por exemplo, Email é obrigatório)
- Formato errado (por exemplo, Formato de data inválido: use YYYY-MM-DD)
- Tipo errado (por exemplo, Quantity deve ser um número)
- Valor desconhecido (por exemplo, Status deve ser um de Active, Paused, Closed)
- Muito longo (por exemplo, Notes pode ter até 500 caracteres)
Filtragem é um grande recurso de qualidade de vida. Adicione um toggle como "Apenas linhas com erros" e uma caixa de busca que funcione dentro da pré-visualização. Isso ajuda usuários a focar no que precisa atenção em vez de rolar por centenas de linhas OK.
Evite linguagem técnica. Usuários nunca devem ver "Parse exception" ou "Constraint violation". Diga o que está errado, onde está (linha e coluna) e o que fazer em seguida. No AppMaster, esse tipo de pré-visualização é especialmente útil porque as pessoas muitas vezes importam para regras de negócio reais e validações, não apenas uma tabela plana.
Maneiras de corrigir dados dentro da importação
Uma boa UI de mapeamento não deve parar em apontar problemas. Deve também dar correções rápidas e seguras que possam ser aplicadas ali mesmo, sem sair do fluxo.
Comece com correções inline ao lado da coluna com falha. Se o sistema não consegue interpretar datas, deixe o usuário escolher o formato esperado (como MM/DD/YYYY vs DD/MM/YYYY) e reexecute a pré-visualização imediatamente. Se uma coluna contém "Yes/No" mas seu campo espera true/false, ofereça um toggle simples de conversão.
Para campos com conjunto fixo de valores (status, estado, plano), o mapeamento de valores é o maior poupador de tempo. Quando a importação vê "NY" mas seu app armazena "New York", o usuário deve poder mapear uma vez e aplicar a todas as linhas. A mesma ideia ajuda com caixa de texto e nomes, como converter "active", "Active" e "ACTIVE" em um único valor permitido.
Ações rápidas ajudam a limpar bagunças comuns rapidamente:
- Remover espaços no início e fim
- Substituir vazios por um padrão (como "Unknown")
- Remover separadores de milhar ("1,200" -> "1200")
- Normalizar números de telefone (manter apenas dígitos)
- Converter texto para Title Case para nomes
Mantenha essas ações reversíveis. Mostre o que mudará, quantas linhas são afetadas e permita Desfazer. Uma pequena prévia "antes/depois" para a coluna selecionada evita surpresas.
Seja claro sobre o que não pode ser corrigido na UI. Se uma coluna está faltando inteiramente, linhas se deslocaram por causa de vírgulas não escapadas, ou o arquivo mistura cabeçalhos no meio, a melhor correção é editar o CSV. Diga isso de forma direta e explique o que mudar.
Um exemplo simples: se 600 linhas têm "CA " com um espaço final, um clique deve limpar isso e fazer sua validação passar sem precisar reexportar.
Um fluxo simples passo a passo para importação
Uma boa UI de mapeamento torna o trabalho calmo porque divide em poucas decisões pequenas, em uma ordem fixa. Usuários devem sempre saber o que vem a seguir e o que acontecerá com seus dados.
Comece pelo upload. Assim que o arquivo for escolhido, detecte delimitador e encoding, então mostre uma pré-visualização pequena (cabeçalhos mais a primeira linha ou duas). É aí que pessoas notam problemas comuns cedo, como uma única coluna porque o delimitador está errado, ou caracteres estranhos por problemas de encoding.
Depois pergunte como a importação deve se comportar. Alguns usuários estão criando registros novos, outros atualizando existentes, e muitos precisam de upsert. Se update ou upsert for selecionado, exija um identificador (por exemplo email, external ID ou número do pedido) e mostre um aviso se a coluna identificadora tiver vazios ou duplicatas.
Em seguida, passe para mapeamento e padrões, então rode a validação. Deixe os usuários confirmar qual coluna CSV preenche cada campo, quais campos usarão um padrão e quais permanecerão vazios. A validação deve ser rápida e específica, verificando tipos, campos obrigatórios, duplicatas e regras referenciais.
Um fluxo simples fica assim:
- Fazer upload do arquivo e pré-visualizar algumas linhas
- Escolher modo: create, update por key, ou upsert (e escolher a chave)
- Confirmar mapeamentos e padrões, então validar
- Revisar erros e corrigi-los (ou exportar apenas as linhas com erro)
- Executar a importação e mostrar um resumo de conclusão
Na etapa de revisão de erros, mantenha o usuário avançando. Mostre contagens por tipo de erro, permita filtrar apenas linhas ruins e torne a próxima ação óbvia: corrigir no lugar, ignorar uma linha ou baixar as linhas problemáticas para editar e reenviar.
Finalize com um resumo claro: quantos registros foram criados, atualizados, pulados e falharam, além de qual chave foi usada para a correspondência. Se isso for feito em uma ferramenta como o AppMaster, esse resumo deve bater com o que o backend realmente escreveu, não com o que a UI esperava que acontecesse.
Armadilhas comuns a evitar
Uma tela de mapeamento pode parecer “pronta” assim que usuários conseguem combinar campos e clicar em Import. Os problemas reais aparecem depois que os dados caem no sistema: duplicatas, mudanças silenciosas e erros que ninguém consegue corrigir.
Uma armadilha clássica é permitir que as pessoas rodem uma importação no modo update sem um identificador único. Se os usuários não conseguem mapear algo como Customer ID, Email ou outro campo garantidamente único, não dá para atualizar registros existentes com confiança. O resultado costuma ser registros duplicados que parecem válidos, só repetidos. Se faltar um identificador, a UI deve dizer isso claramente e oferecer uma escolha: "Importar como registros novos" ou "Parar e adicionar um ID".
Outra questão sutil é coerção de tipo silenciosa. Um valor como "00123" pode ser um código real, não um número. Se a importação transforma em 123, você perde zeros à esquerda e quebra correspondências depois. Trate strings que parecem números com cuidado, especialmente para CEPs, SKUs e códigos de conta. Se for necessário converter tipos, mostre o antes/depois na pré-visualização.
A validação pode falhar de duas maneiras opostas. Rigor excessivo bloqueia linhas inofensivas (como um telefone opcional ausente). Ser muito permissivo cria lixo (nomes vazios, emails inválidos, datas sem sentido). Uma abordagem melhor é separar:
- Erros bloqueadores (precisam ser corrigidos para importar)
- Avisos (é possível importar, mas o usuário deve revisar)
- Auto-fixes (remover espaços, normalizar caixa) que são visíveis na pré-visualização
Mensagens de erro frequentemente se tornam inúteis porque não apontam a célula exata. Sempre vincule o feedback a uma linha e coluna específicas e inclua o valor original. “Linha 42, Email: ‘bob@’ não é um email válido” é melhor que “Dados inválidos encontrados”.
Por fim, não torne a confirmação final vaga. Usuários precisam ver o que vai acontecer: quantos registros serão criados, quantos atualizados e quantos pulados. Se houver updates, mostre o campo identificador que será usado para a correspondência para que as pessoas enxerguem um mapeamento ruim antes de sobrescrever dados reais.
Checagens rápidas antes de clicar em Import
Logo antes de alguém clicar em Import, a pergunta simples é: “Estou prestes a estragar meus dados?” Uma boa UI de mapeamento responde com um checklist claro e entediante, que gera confiança.
Comece mostrando uma pré-visualização real e pequena. Uma amostra de 10 a 20 linhas é suficiente para a maioria das pessoas identificar problemas óbvios como colunas deslocadas, formatos de data estranhos ou espaços extras. A pré-visualização deve refletir o mapeamento atual, não o CSV bruto, assim o usuário vê exatamente o que será gravado.
Em seguida, torne impossível não notar campos obrigatórios. Se um campo obrigatório não estiver mapeado, force uma decisão: mapeá-lo, definir um padrão ou parar. Não deixe os usuários descobrirem campos obrigatórios faltando só depois de uma importação fracassada.
Células em branco precisam de uma regra em linguagem simples. Diga ao usuário se vazios vão virar vazio, manter o valor atual (no caso de updates) ou acionar um padrão. Um pequeno texto como “Vazio = manter valor existente” na linha de mapeamento evita muitas importações ruins.
Por fim, deixe o foco nos problemas, não na perfeição. Se existir issues, dê uma vista filtrada para apenas as linhas com erros ou avisos, com a razão mostrada ao lado da linha. Isso faz a correção parecer manejável.
Aqui está um checklist pré-import que você pode colocar acima do botão final:
- Pré-visualização mostra linhas de amostra com o mapeamento atual aplicado
- Todos os campos obrigatórios estão mapeados ou têm valor padrão
- Comportamento de células vazias está claro para create e update
- Você pode filtrar apenas linhas com problemas e revisá-las rapidamente
- Resumo mostra contagens para create vs update vs skip (e contagem de erros)
Se você está construindo isso no AppMaster, trate essas checagens como a “última tela de segurança” antes do backend gravar qualquer coisa. Para o sistema, é mais barato barrar uma importação ruim aqui do que limpar milhares de registros depois.
Cenário de exemplo: importando clientes de uma planilha
Um líder de suporte exporta uma lista de clientes e quer carregar num CRM simples. O CSV tem colunas: Name, Email, Phone, Status e Signup Date.
Na tela de mapeamento, ele combina colunas para campos assim:
- Name -> Customer name
- Email -> Email (obrigatório)
- Phone -> Phone (opcional)
- Status -> Status (dropdown)
- Signup Date -> Signup date (date)
Alguns problemas aparecem imediatamente. Algumas linhas não têm Email. Valores de Status são inconsistentes (Active, ACTIVE, actv). Signup Date está misturado: algumas linhas usam 2025-01-03, outras 01/03/2025, e algumas têm 3 Jan 2025.
Em vez de forçar o usuário a corrigir o arquivo inteiro primeiro, a etapa de mapeamento deixa definir padrões e regras seguras. Eles escolhem um Status padrão "Active" apenas quando a coluna estiver vazia, não quando tiver um valor. Para Signup Date, escolhem o formato esperado (por exemplo, YYYY-MM-DD) e dizem ao importador para tratar outros formatos como erros.
A pré-visualização vira o ponto de decisão. Pode mostrar:
- 12 linhas bloqueadas: falta Email
- 7 linhas sinalizadas: valor desconhecido de Status "actv"
- 5 linhas sinalizadas: formato de data inválido
A partir da pré-visualização, o usuário corrige rápido sem adivinhar. Mapeia em massa "actv" para "Active" e corrige as cinco datas ruins in-place. Para emails faltantes, pode pular essas linhas ou parar a importação e pedir ao time para preenchê-las.
Ferramentas como o AppMaster podem tornar isso natural ao parear a tela de mapeamento com validação clara e uma pré-visualização que reflete exatamente o que será gravado, para o usuário confiar na importação antes de salvar qualquer dado.
Próximos passos: lance a UI de importação e mantenha-a segura
Trate seu primeiro lançamento como um experimento controlado. Comece com um arquivo de teste pequeno (10–50 linhas) e execute o fluxo completo: mapeamento, padrões, pré-visualização e gravação final. Se os resultados estiverem corretos, permita que os usuários salvem o mapeamento para a próxima importação ser mais rápida e consistente. Um mapeamento salvo também é uma rede de segurança, porque reduz combinações pontuais e criativas.
Coloque a UI de mapeamento onde ela naturalmente pertence: num painel de administração ou numa ferramenta interna que já gerencia os dados. Por exemplo, um líder de suporte não deveria precisar de permissões extras ou outro sistema só para adicionar clientes. Mantenha perto da lista onde poderão verificar o resultado imediatamente.
Após a importação, mostre um relatório curto e claro e deixe-o disponível para revisão posterior. Usuários não devem ter que adivinhar o que aconteceu.
O que registrar e o que mostrar
Capture detalhes suficientes para depurar sem sobrecarregar. Um bom resumo pós-import inclui:
- Linhas processadas, criadas, atualizadas e puladas
- Contagem de erros com um relatório de erro baixável ou copiável (número da linha, coluna, mensagem)
- Nota sobre qual mapeamento salvo e padrões foram usados
- Horários (início, fim) e quem executou
- Um link rápido de volta para os registros alterados filtrados (se seu app suportar)
Se você está construindo isso no AppMaster, pode modelar os dados no Data Designer, construir telas de mapeamento e pré-visualização com os construtores visuais e aplicar validação no Business Process antes de gravar qualquer coisa no PostgreSQL. Essa separação facilita manter "pré-visualização" segura e "importação" rigorosa.
Finalmente, adicione mais uma trava antes do lançamento: exija um teste de importação em cada ambiente (staging, depois produção) e mantenha importações restritas por papel ou permissão. Isso mantém o recurso útil sem torná-lo arriscado.


