mygems

Unir arquivos CSV em um só

Vários arquivos entram, um sai, colunas associadas pelo nome.

  • Associa colunas pelo nome
  • Qualquer número de arquivos
  • Avisa sobre colunas divergentes
  • Nada é enviado

1.Adicione os arquivos

CSV ou TSV. Vários de uma vez ou aos poucos.

Por que existe

Unir CSVs na mão dá errado de um jeito específico: os arquivos concordam sobre o significado das colunas, mas não sobre a ordem, e uma concatenação ingênua desloca em silêncio todos os valores uma coluna para a esquerda. Aqui as colunas são associadas pelo nome, você vê quais arquivos não tinham quais colunas, e as lacunas são preenchidas com vazios em vez de dados errados.

O que ele faz

  • Recebe qualquer número de arquivos CSV ou TSV e empilha as linhas em um só.
  • Alinha as colunas pelo nome do cabeçalho, não pela posição, então a ordem das colunas pode diferir entre os arquivos.
  • Aponta toda coluna ausente em pelo menos um arquivo, antes de você confirmar a união.
  • Opcionalmente adiciona uma coluna `source_file` para você saber depois de onde veio cada linha.
  • Baixa o resultado como um único CSV.

O que ele não faz em silêncio

Ele não descarta uma coluna que só alguns arquivos têm e não adivinha que duas colunas com nomes diferentes significam a mesma coisa. Ambas são decisões, e ele pergunta em vez de presumir.

Perguntas

O que acontece se os arquivos tiverem colunas diferentes?
Todas as colunas de todos os arquivos aparecem no resultado. Uma linha de um arquivo que não tinha determinada coluna recebe um valor vazio ali. As colunas divergentes são listadas antes da união, então nada surpreende você.
A ordem das colunas precisa ser a mesma?
Não. As colunas são associadas pelo nome do cabeçalho. Essa é a diferença que importa: concatenar arquivos por posição quando a ordem difere corrompe todas as linhas, em silêncio.
Quantos arquivos posso unir?
Quantos a memória da aba aguentar. O limite prático é o tamanho total, não o número de arquivos.