Dividir um CSV grande demais

O portal aceita 5.000 linhas por vez e a sua exportação tem 84.000. Aqui o arquivo é cortado em partes, cada uma com a linha de cabeçalho repetida no topo, prontas para enviar uma depois da outra. O arquivo fica no seu dispositivo.

Toque aqui ou arraste o CSV que você quer dividir

Os tamanhos mais comuns:
Os tamanhos mais comuns:
O arquivo nunca sai do seu navegador: ele é lido aqui, um pedaço de cada vez, e não é enviado a lugar nenhum.

Cada parte já abre com as colunas no lugar

A linha de cabeçalho é copiada no topo de cada parte, e isso não é enfeite: sem ela, o portal que recebe o segundo arquivo lê o primeiro cliente como se fosse o nome das colunas, e esse cliente desaparece. O mesmo vale para o Excel, para o sistema de gestão e para quem recebe as partes: um CSV sem cabeçalho é uma tabela que ninguém consegue mais ler.

No início de cada parte vão os três bytes conhecidos como marca UTF-8, aqueles que fazem o Excel mostrar “città” em vez de “città ”. É por isso que o mesmo arquivo parece certo num editor de texto e errado no Excel, e é a reclamação número um de quem divide arquivos CSV à mão. Com uma exceção, e ela é avisada: se o arquivo de origem não está escrito em UTF-8 (muitos sistemas de empresas ainda exportam na codificação antiga do Windows), essa marca diria uma coisa falsa ao Excel, então ela é deixada de fora e a página avisa você.

Junte as partes de novo e você obtém o arquivo original, byte por byte

Esta página não reescreve nada: não recodifica o texto, não mexe nas aspas, não troca o separador, não arruma os decimais. O arquivo é percorrido byte a byte apenas para marcar onde cada linha termina, e as partes são recortes do original. A promessa cabe numa linha, e é nela que os testes se baseiam: junte as partes, tire a marca UTF-8 e os cabeçalhos repetidos, e você recupera exatamente o arquivo de origem.

É daí que vem também o tratamento das aspas. Um campo pode conter o separador, aspas duplicadas e até uma quebra de linha dentro do campo, que é a armadilha que estraga quase toda divisão feita com um editor de texto: ali dentro a quebra de linha não encerra a linha da tabela, e cortar nesse ponto parte o registro ao meio. Aqui uma linha termina só onde o registro realmente termina. Pelo mesmo motivo, uma linha totalmente vazia fica onde está: eliminá-la pareceria mais arrumado e quebraria a promessa acima.

Por linhas ou por tamanho: são duas perguntas diferentes

“Cinco mil linhas por vez” é o que pede um portal, contando registros; “10 MB no máximo” é o que pede uma caixa de e-mail ou um formulário de envio, contando bytes. Contar linhas é exato por definição. Contar o tamanho também é exato, e vale explicar por quê: uma parte aqui é a soma de três trechos de bytes, então o seu peso é conhecido antes de a parte ser escrita, e não estimado; a parte é fechada antes que entre a linha que a faria estourar, então cada parte fica o maior possível. Antes de chegar a você, o arquivo montado ainda é pesado de verdade, e se o peso não bater com a conta a página avisa, em vez de entregar um arquivo pelo qual não pode responder.

Duas coisas que vale saber sobre megabytes. Aqui 1 MB significa um milhão de bytes, como contam os sites e as caixas de e-mail: se quem quer o arquivo estava pensando nos 1.048.576 do Windows, suas partes continuam abaixo do limite. E um anexo de e-mail é reescrito numa forma que o faz crescer cerca de um terço: com uma caixa que aceita 25 MB, o arquivo real precisa ficar abaixo de 18-19. Se você está preparando um e-mail, mire aí. E há o caso extremo: uma linha que sozinha já passa do limite não pode ser cortada ao meio, então ela vai para uma parte só dela e é sinalizada.

O que esta página não faz

Ela não abre arquivos Excel. Um .xlsx é um arquivo compactado, não um CSV, e o leitor desses arquivos já existe em outra página deste site: manter duas cópias é o jeito mais certo de fazê-las divergir. Se o que você tem é um .xlsx, o passo é Excel (XLSX) para CSV.

Ela não conserta nem limpa: se o arquivo tem linhas com um número diferente de colunas, espaços soltos ou duplicatas, esses defeitos ficam exatamente como estão dentro das partes, porque as partes são o original cortado. O lugar certo para esse trabalho é Limpar um CSV. Se, ao contrário, você precisa juntar vários arquivos CSV em um só, use Unir dois CSV. E se as partes divididas aqui precisam abrir no Excel sem perder os zeros à esquerda dos códigos nem transformar CEPs em números, o passo é CSV para Excel.

Ferramentas relacionadas