Comparar dois arquivos CSV: o que mudou entre as exportações
Duas exportações de períodos seguidos, um arquivo que você enviou e a resposta a ele, um catálogo de produtos antes e depois de uma atualização. A tarefa parece simples, mas os jeitos usuais de fazê-la produzem uma resposta em que não se pode confiar.
Por que um diff linha a linha não funciona
Ferramentas de comparação de texto (WinMerge, o diff dos editores) combinam linhas pela posição. Para uma tabela isso está errado: basta um registro ser inserido no meio, e todas as linhas seguintes são marcadas como alteradas.
Além disso, a ordem da exportação pode ter mudado — aí tudo aparece como diferente, mesmo com os dados idênticos.
As tabelas são comparadas não pela posição, mas pela chave: um campo, ou conjunto de campos, que identifica um registro de forma única.
Por que o PROCV não basta
A abordagem clássica é trazer as duas exportações para uma planilha e compará-las com uma fórmula. Funciona, com ressalvas:
- o PROCV diz se um registro existe, mas não qual campo mudou — isso exige uma fórmula por coluna;
- em algumas centenas de milhares de linhas o recálculo leva minutos;
- o Excel já estragou os zeros à esquerda no caminho, e as chaves deixaram de coincidir — a causa mais irritante e mais frequente de falsas diferenças (veja zeros à esquerda).
Como fazer direito
O procedimento é o mesmo para duas tabelas quaisquer:
- Escolha a chave. Um campo ou vários: um número de pedido, um par como código do produto + depósito, um CPF + data. A chave precisa ser única — se não for, a ferramenta deve dizer quantas repetições encontrou.
- Combine as colunas pelo nome, não pela posição: um campo pode ter sido adicionado no meio da nova exportação.
- Obtenha quatro números: adicionados, removidos, alterados, inalterados. Eles devem somar o número de linhas — a primeira verificação de sanidade do resultado.
- Veja o que exatamente mudou, até o campo: era → agora.
No Tabulens as duas exportações abrem em abas, a chave é escolhida com um clique, e o relatório de divergências pode ser exportado para CSV — pronto para entregar a quem corrige os dados no sistema de origem.
Armadilhas da comparação
- Espaços.
"Silva "e"Silva"são textos diferentes. O corte das pontas deve estar ligado, ou metade dos registros aparecerá como “alterada”. - Maiúsculas e minúsculas. Para códigos geralmente importam, para sobrenomes geralmente não. É uma configuração, não um dogma.
- Formatos de número.
10.5e10,50são o mesmo valor escrito de formas diferentes. Compare os valores convertidos, não o texto. - Chave não única. Se vários registros compartilham uma chave, a comparação perde o sentido: acrescente outro campo à chave.
Perguntas frequentes
Posso comparar um CSV com um DBF?
Pode, desde que as duas tabelas tenham colunas com os mesmos nomes: o formato de origem não importa para a comparação.
E se os arquivos estiverem ordenados de forma diferente?
Em uma comparação por chave, a ordem das linhas não importa.
Quão rápido é?
Comparar duas tabelas de cerca de mil e quinhentas linhas leva dezenas de milissegundos; em centenas de milhares de linhas, segundos.
Grátis para uso pessoal. Seu arquivo não é enviado a nenhum servidor. Versão para Windows — 3.5 MB, sem instalação: detalhes. Para organizações — licença.