Abra um arquivo CSV para conferir a estrutura: cada registro comparado com a quantidade de campos do cabeçalho, nomes de coluna vazios ou repetidos, aspas soltas, quebras de linha misturadas e linhas em branco. Acrescente regras opcionais por coluna, como número inteiro, data, e-mail, obrigatório, único, valores permitidos ou expressão regular, e cada problema aparece com a linha de dados, a coluna e o valor. As regras usam o vocabulário do Frictionless Table Schema. O arquivo é conferido no seu navegador, sem upload.
Como validar um arquivo CSV
- Abra um arquivo
.csv,.tsvou.txt. O delimitador e a marca de ordem de byte (BOM) de UTF-8 ou UTF-16 são detectados; se as colunas parecerem erradas, escolha outro delimitador ou uma codificação antiga nas configurações de importação. - Se quiser, informe o número de colunas que todo registro deve ter. Se o campo ficar vazio, vale a quantidade de colunas do cabeçalho.
- Se quiser, acrescente regras para as colunas que importam: um tipo, se o valor é obrigatório ou precisa ser único, valores permitidos, mínimo e máximo, faixa de comprimento ou um padrão.
- Rode a verificação e trate o relatório: primeiro os erros, depois os avisos. Corrija os valores no editor de CSV ou arrume-os com Limpar CSV e valide de novo.
Para ver os tipos, os vazios e os valores distintos de cada coluna antes de escrever as regras, faça um perfil do arquivo com Analisar CSV.
Verificações de estrutura
| Quantidade de campos (erro) | Um registro tem mais ou menos campos que o cabeçalho, ou que o número informado por você. A RFC 4180 espera que todos os registros tenham a mesma quantidade de campos; uma diferença costuma indicar um delimitador sem aspas ou um valor faltando. |
|---|---|
| Cabeçalho vazio (erro) | Um nome de coluna está vazio ou só tem espaços. O relatório informa a posição. |
| Cabeçalho repetido (erro) | Dois nomes de coluna ficam iguais depois de tirar os espaços. O relatório informa as duas posições. |
| Aspa solta (aviso) | Um caractere de aspas aparece dentro de um valor sem aspas, como 5" screen. O valor é mantido como está; o relatório dá o total no arquivo. |
| Texto depois da aspa de fechamento (aviso) | Há caracteres depois de uma aspa de fechamento e antes do próximo delimitador, como em "abc"x. |
| Quebras de linha misturadas (aviso) | O arquivo mistura finais de registro CRLF, LF e CR. O relatório conta cada tipo. |
| Linhas em branco (aviso) | Linhas vazias entre os registros. Elas são puladas, e o relatório as conta. |
| Espaços nas pontas (aviso) | Um valor tem espaços antes ou depois do texto. Ativado por padrão; valores que só têm espaços não são apontados. |
Um valor entre aspas que nunca é fechado interrompe a verificação com um erro que indica o registro onde ele começa, porque o resto do arquivo não pode mais ser dividido em registros com segurança.
Regras por coluna
| Tipo: número inteiro | Só sinal opcional e dígitos, como -12 ou 007. Valores além de ±9.007.199.254.740.991 são apontados; para códigos longos, use uma regra de texto com padrão. |
|---|---|
| Tipo: número | Notação decimal simples com ponto, como 3.5, -0.25 ou 1e3. Sem separador de milhar, moeda ou espaços em volta. Valores com vírgula decimal, comuns em planilhas brasileiras, não passam nesta regra. |
| Tipo: true / false | true ou false, com qualquer combinação de maiúsculas e minúsculas. 1, 0, yes e no são apontados. |
| Tipo: data, data e hora | Uma data real do calendário escrita como YYYY-MM-DD, então 2024-02-30 é apontada. Data e hora acrescenta um horário (2024-03-05T09:30, com segundos e fuso Z ou +02:00 opcionais). |
| Tipo: texto com formato | E-mail (uma verificação simples do formato name@domain.tld, não um teste de entrega), URI (uma URL absoluta com esquema) ou UUID (versões 1 a 8). |
| Obrigatório | O valor não pode estar vazio. Sem essa regra, valores vazios passam em todas as outras. |
| Único | Nenhum valor pode se repetir na coluna. O relatório indica a linha em que ele apareceu pela primeira vez. Valores vazios não são comparados. |
| Valores permitidos | O valor precisa ser exatamente igual a um dos valores da lista, inclusive maiúsculas e espaços. |
| Mínimo, máximo | Limites inclusivos para colunas de número inteiro e de número, ou datas ISO para colunas de data e de data e hora. |
| Comprimento mínimo e máximo | Contado em caracteres Unicode, então é e 日 contam como um cada. |
| Padrão | Uma expressão regular que precisa corresponder ao valor inteiro, como exige o Table Schema; por exemplo, [A-Z]{2}\d{4}. A comparação diferencia maiúsculas de minúsculas. |
Uma regra vale para a coluna cujo cabeçalho é exatamente igual ao nome da regra; regras de colunas que não existem no arquivo são ignoradas. As regras podem ser salvas como um arquivo JSON no formato Table Schema e carregadas de novo na próxima exportação; tipos e chaves desconhecidos em um schema carregado são ignorados.
Como ler o relatório
- A numeração conta os registros de dados depois do cabeçalho (o cabeçalho é a linha 0). Um valor com quebra de linha dentro das aspas continua sendo um único registro, então o número da linha pode ser diferente do número da linha em um editor de texto.
- Cada problema indica a coluna e cita o valor, para você procurá-lo no visualizador de CSV ou no editor.
- Erros quebram a estrutura ou uma regra; avisos apontam dados que são CSV válido, mas costumam causar problemas na importação.
- São listados até 5.000 problemas. Acima disso, os totais por tipo de problema continuam sendo contados, e a lista é marcada como incompleta.
Limites e privacidade
O validador lê um registro por vez, então arquivos acima do limite interativo de 25 MB são conferidos em fluxo, em segundo plano, com progresso e opção de cancelar. No modo em fluxo, registros com menos campos que o cabeçalho são completados antes da verificação, por enquanto; assim, só registros com campos a mais são apontados como erro de quantidade de campos.
A validação roda no seu navegador. O CSV não é enviado para nenhum servidor.
Exemplo
Uma exportação de cadastros conferida com quatro regras: id é um número inteiro obrigatório e único; email é um texto obrigatório no formato de e-mail; signup_date é uma data; plan aceita basic, pro e team. O resultado é o relatório do validador, com um problema por linha depois do resumo: uma data impossível, um e-mail sem o final do domínio, Pro com maiúscula indevida, um id repetido, um e-mail faltando e team com espaço no fim, que gera um aviso e também não é um valor permitido.
id,email,signup_date,plan 1,ana@example.com,2024-02-30,pro 2,kim@example,2024-03-01,Pro 2,bao@example.com,2024-03-04,basic 4,,2024-03-05,team
{"rows":4,"errors":6,"warnings":1,"truncated":false}
{"code":"type","row":1,"column":"signup_date","value":"2024-02-30","params":{"type":"date"}}
{"code":"format","row":2,"column":"email","value":"kim@example","params":{"format":"email"}}
{"code":"enum","row":2,"column":"plan","value":"Pro","params":{"allowed":"basic, pro, team"}}
{"code":"unique","row":3,"column":"id","value":"2","params":{"first":2}}
{"code":"whitespace","row":4,"column":"plan","value":"team ","params":{}}
{"code":"required","row":4,"column":"email","value":"","params":{}}
{"code":"enum","row":4,"column":"plan","value":"team ","params":{"allowed":"basic, pro, team"}}Perguntas frequentes
Por que um valor com espaço é apontado na lista de valores permitidos?
As regras comparam o valor exatamente como está escrito, sem tirar espaços, então team não é team. Tire os espaços da coluna com Limpar CSV ou corrija a exportação.
A validação altera meu arquivo?
Não. Ela só lê o arquivo e informa o que encontrou. Corrija os problemas no editor ou no sistema de origem.
Posso reaproveitar as mesmas regras em toda exportação mensal?
Sim. Salve as regras como um arquivo JSON no formato Table Schema e carregue-o na próxima vez; as regras são associadas às colunas pelo nome.