Converter NDJSON para CSV

Aqui você converte NDJSON para CSV de graça e sem conta: solte o arquivo acima e em poucos segundos o resultado está pronto para baixar. A conversão acontece dentro do seu próprio navegador, então o arquivo nunca é enviado. Funciona igual no Windows, no macOS e no Linux e também no iPhone e no Android, e continua funcionando mesmo se você cortar a conexão.

  • Onde roda No seu navegador. O arquivo nunca é enviado.
  • Reconstruído CSV funciona de um jeito diferente de NDJSON. Não é a degradação gradual de um codec com perda: o que CSV consegue expressar é reproduzido fielmente, e o que não tem equivalente ali não sobrevive de jeito nenhum.
  • Limite de tamanho Até 100 MB por arquivo, de graça e sem conta.
  • Vale saber Objetos aninhados são achatados em colunas. Dados muito aninhados perdem a forma.

Até 100 arquivos de uma vez. Formatos misturados não são problema.

Uma linha entra, uma linha sai, e a contagem é conhecida antes

A aritmética aqui é mais simples que qualquer outra fonte deste site. NDJSON garante um registro completo por linha, então o número de linhas que você vai receber é o número de linhas no arquivo.

Isso torna a conversão previsível de um jeito que um array JSON não é. Se o arquivo tem 412.000 linhas você recebe 412.000 linhas mais um cabeçalho. Linhas em branco são puladas, incluindo a quebra final que quase todo escritor deixa.

Linhas que discordam são o que torna a tabela larga

Cada linha num arquivo NDJSON é independente, e nada obriga a segunda a carregar as chaves da primeira. Um fluxo de log que emite vários tipos de evento coloca tudo num arquivo só, com campos diferentes cada.

A conversão coleta toda chave vista em qualquer lugar do arquivo e dá uma coluna para cada uma, deixando células vazias onde uma linha não tinha aquele campo. Se isso descreve sua saída, filtrar o arquivo para um tipo de evento antes de converter costuma ser melhor que alargar a planilha.

Uma linha malformada para a conversão e se identifica

Se uma linha não for JSON válido, a conversão não continua além dela. A mensagem diz qual linha: "Este arquivo não pôde ser lido como NDJSON — a linha 3 não é JSON válido."

Uma linha quebrada num log quase nunca significa um caractere estranho. Significa uma escrita truncada — um processo morto no meio, um arquivo rotacionado cortado numa fronteira. Com o número da linha em mãos, apagar ou reparar o final leva um comando.

Campos de log aninhados viram colunas com ponto

Logging estruturado costuma aninhar: um objeto de requisição com um método, um objeto de usuário com um id. Isso é achatado em colunas nomeadas pelo caminho — request.method, user.id — com uma coluna por valor folha.

Um ou dois níveis produzem uma tabela que qualquer um consegue trabalhar. Estruturas mais profundas alargam rápido, e uma linha de log carregando um payload inteiro serializado vai produzir uma coluna por campo dentro dele.

Arrays dentro de uma linha não têm boa coluna

Um registro carregando uma lista — tags, quadros de erro — é achatado em colunas numeradas: tags.0, tags.1, tags.2. Todo valor sobrevive e a tabela ganha uma coluna para a lista mais longa do arquivo.

Para análise isso raramente é o que se quer. Se o array é incidental, juntar num único texto antes de converter produz uma coluna legível. Se o array é o que está sendo analisado, o formato que você quer é uma linha por elemento.

O que um CSV não consegue carregar das linhas JSON

Tipos são a principal baixa, e vale deixar claro que se perdem no destino em vez de na travessia. Os valores são escritos fielmente — um número como dígitos, um booleano como true ou false — mas CSV não tem sistema de tipos.

O Excel decide mal e previsivelmente: zeros à esquerda somem de identificadores, qualquer coisa com formato de data vira data. A solução é importar em vez de abrir — Dados, De Texto/CSV, com as colunas de identificador definidas como Texto.

Aspas, separadores e os valores que precisam delas

Valores contendo vírgula, aspas ou quebra de linha são envolvidos em aspas duplas com aspas internas dobradas, a convenção RFC 4180. Dados de log dependem bastante disso — user agents, caminhos de requisição com query strings, mensagens de erro.

Se o destino é um pipeline de shell em vez de uma planilha, essas aspas são exatamente o que ferramentas ingênuas não implementam, e converter para valores separados por tabulação evita o problema todo.

Que tamanho de arquivo de log isto aguenta

A leitura é rápida e o limite é memória, porque o arquivo inteiro é lido em registros antes da primeira linha ser escrita. O nível gratuito aceita até 100 MB; dezenas de megabytes converte sem drama.

Acima disso, o formato de origem está a seu favor. NDJSON divide com segurança em qualquer fronteira de linha — split -l 500000 produz arquivos válidos — então converter um log muito grande em partes é legítimo, não um contorno.

O arquivo de log nunca sai da sua máquina

A conversão é JavaScript puro rodando nesta aba. Nenhuma requisição carrega o arquivo a lugar nenhum, não há conta nem limite diário, e a aba de rede confirma isso.

Não é um detalhe para este par. Um log de produção guarda endereços IP, identificadores de sessão e caminhos de requisição — exatamente a categoria que a LGPD trata como dado pessoal quando há como identificar alguém, e que ninguém deveria colar num serviço web desconhecido.

Como converter NDJSON para CSV

  1. Solte o seu arquivo NDJSON nesta página, ou clique para escolher um.
  2. Escolha CSV como destino. A conversão acontece no seu navegador e o arquivo não é enviado.
  3. Baixe o arquivo CSV pronto.

NDJSON ou CSV: o que muda

NDJSON comparado com CSV
NDJSONCSV
Nome completoNewline-Delimited JSONComma-Separated Values
Extensão do arquivo.ndjson, .jsonl.csv
Tipo de mídiaapplication/x-ndjsontext/csv
Publicado pela primeira vez20131972
EspecificaçãoRFC 4180
LicençaPadrão abertoPadrão aberto
Situação hojeAtualAtual
Abre no navegadorNenhum navegadorNenhum navegador
Considerado no lugarJSONXLSX, JSON, Parquet

Abrir o resultado

pandas lê tanto NDJSON quanto CSV, então dá para comparar o resultado com o original sem um segundo programa.

Para que serve cada formato

CSV e de 1972, descrito em RFC 4180. Microsoft Excel, LibreOffice Calc e pandas leem o formato.

CSV foi publicado em 1972 e NDJSON em 2013. O mais antigo costuma ser o arquivo mais seguro para entregar; o mais novo faz o mesmo com menos bytes.

De NDJSON para CSV: perguntas frequentes

Meu arquivo NDJSON é enviado para algum lugar?

Não. Esta conversão acontece inteiramente no seu navegador, então o arquivo não sai do seu aparelho. Você mesmo pode conferir: abra a aba de rede das ferramentas de desenvolvedor e converta alguma coisa. Você verá a própria página e as requisições de estatística e de publicidade com que este serviço é pago, e nenhuma que leve o seu arquivo.

Converter NDJSON para CSV é grátis?

É. Sem conta, sem marca d’água e sem cota diária para gastar: roda no seu próprio aparelho, então você pode voltar quantas vezes quiser. O navegador processa arquivos de até 100 MB, 100 por vez.

Perde qualidade ao converter NDJSON para CSV?

NDJSON e CSV descrevem o conteúdo de maneiras radicalmente diferentes. A conversão é, portanto, uma reconstrução e não uma cópia: fiel, mas não idêntica byte a byte. Objetos aninhados são achatados em colunas. Dados muito aninhados perdem a forma.

Preciso instalar alguma coisa para abrir um arquivo CSV?

Para a conversão, não: ela acontece no navegador que você já tem aberto. Para abrir o resultado você precisa depois do programa com que o seu aparelho normalmente exibe Comma-Separated Values.

Mais sobre esses formatos