TSV

O que é um arquivo TSV?

Como CSV, mas separado por tabulação — com isso o problema da vírgula dentro de um campo nem chega a existir.

O que é TSV

TSV é um formato de texto puro que abre em qualquer editor. Ele é usado para mover dados entre programas.

A extensão é .tsv e o nome por extenso é Tab-Separated Values. Os dois importam menos do que aquilo que o arquivo consegue carregar, e é disso que trata o resto desta página.

De onde vem TSV

Ele remonta a 1993. A especificação é IANA text/tab-separated-values.

A um formato que se manteve legível por tanto tempo dá para confiar algo que você quer de volta daqui a dez anos.

A especificação é pública

Ela está publicada por inteiro, então dá para implementá-la a partir do documento em vez de por observação — é por isso que o formato aparece em tantos programas e por isso que arquivos escritos há vinte anos ainda abrem. Especificação publicada não é o mesmo que livre de royalties: quando o formato embrulha um codec, o licenciamento das patentes é uma questão à parte, que a norma não resolve.

Nada é jogado fora

TSV guarda o conteúdo exatamente. Salvar de novo não muda nada, então dá para abrir, editar e salvar quantas vezes você quiser sem acumular estrago — e é isso que faz dele um formato de trabalho e não de entrega.

Não há onde deixar uma anotação

TSV não tem sintaxe de comentário. Tudo que explica precisa morar fora do arquivo, e é bom saber disso antes de escolhê-lo para algo que uma pessoa vai editar na mão.

O que abre TSV

Microsoft Excel, LibreOffice Calc e pandas leem esse formato, e a maioria dos programas do mesmo tipo também.

Quando um arquivo não abre, o formato raramente é o problema — mais comum é o programa ser mais antigo que ele. Converter para algo mais antigo é o caminho confiável, e é para isso que serve o resto deste site.

Abrir no navegador

Nenhum navegador lê o formato.

Esse é de longe o motivo mais comum para convertê-lo: não que o formato seja ruim, mas que o lugar onde você quer mostrar o arquivo não consegue lê-lo.

É um formato de trabalho

TSV foi feito para ser aberto e alterado. Mantenha o arquivo nesse formato enquanto o trabalho estiver em andamento e exporte a partir dele sempre que precisar de uma cópia pronta.

O que dá errado com ele

As reclamações que se repetem: os tipos das colunas são adivinhados na importação em vez de declarados.

Nada disso é motivo para evitar o formato. São as coisas que vale conhecer antes que uma delas te pegue de surpresa, o que é uma afirmação diferente e mais útil.

O separador que não aparece nos seus dados

Uma vírgula aparece o tempo todo dentro de dado real — em endereço, razão social, descrição de produto, qualquer texto livre. O CSV lida com isso com regras de aspas, e essas regras são onde o formato costuma quebrar: um campo contendo uma aspa dentro de um campo entre aspas contendo uma vírgula é válido, desagradável, e implementado de forma inconsistente por metade das ferramentas que dizem ler CSV.

Um caractere de tabulação quase nunca aparece dentro de um campo, porque ninguém digita uma tabulação num formulário ou num banco de dados. Então o TSV geralmente dispensa aspas por completo: divida cada linha pela tabulação e você tem os campos, corretamente, sem máquina de estados e sem caso extremo. Esse é o argumento inteiro, e em dado real e bagunçado ele é forte.

Onde o TSV é a convenção local

Bioinformática, onde arquivos de anotação genômica, matrizes de expressão e tabelas de variantes são separados por tabulação como questão de rotina. Trabalho de dados em linha de comando, porque as ferramentas Unix padrão dividem por espaço em branco, e um arquivo separado por tabulação é cidadão de primeira classe ali de um jeito que um CSV com aspas não é.

Também grandes conjuntos de dados públicos e exportações de banco de dados, onde o dado contém vírgulas e prosa, e quem exporta prefere não pensar em regra de aspas. Se te entregaram um .tsv ou um .tab, ele veio de um desses mundos.

O problema da invisibilidade

A virtude da tabulação é também o seu defeito: você não consegue ver. Um arquivo com uma tabulação num lugar e quatro espaços em outro parece idêntico num editor e se processa de forma completamente diferente, e um valor que pegou uma tabulação sobrando no final é indistinguível de um que não pegou.

Isso morde mais forte quando um arquivo é editado à mão ou montado por um script que usou espaços em algum lugar. Qualquer editor decente consegue mostrar caracteres de espaço em branco, e ligar isso antes de mexer num TSV é um hábito de dois segundos que evita uma hora de confusão. É também por isso que um TSV nunca deveria ser montado por concatenação de string sem conferir o que os campos contêm.

O que acontece quando o dado de fato contém uma tabulação

A especificação da IANA é intransigente: campos não podem conter tabulação nem quebra de linha, ponto final. Não há mecanismo de escape, o que é justamente o que mantém o processamento simples.

Na prática surgiram duas convenções. Alguns produtores escapam com sequências de barra invertida, emprestadas do C; outros aplicam aspas ao estilo CSV por cima, o que reintroduz tudo que o TSV estava evitando. Nenhuma das duas é universal, então um arquivo com tabulações embutidas é um arquivo cujo leitor precisa combinar com quem o escreveu. Se seu dado genuinamente contém tabulação ou quebra de linha dentro de campos, CSV com aspas corretas é a escolha mais honesta.

O Excel é o motivo de as pessoas converterem

O Excel abre um .txt ou .tsv pelo diálogo de importação e trata tabulações corretamente, e dar duplo clique num .tsv costuma fazer algo menos útil, dependendo do que está associado à extensão. Ele também aplica exatamente a mesma adivinhação de tipo que estraga CSVs — zeros à esquerda somem, código vira data, identificador longo perde precisão.

Então o conselho é idêntico ao do CSV: importe em vez de abrir, marque as colunas problemáticas como Texto, e se o destinatário é uma pessoa em vez de um programa, envie XLSX e remova a adivinhação por completo.

TSV contra CSV, decidido pelo público

CSV quando o arquivo vai para algum lugar desconhecido. É o que formulários de upload, rotinas de importação e software comercial esperam pelo nome, e uma ferramenta que aceita só um dos dois aceita CSV.

TSV quando você controla os dois lados e o dado é bagunçado — cheio de vírgula, aspas e texto livre — ou quando o trabalho acontece na linha de comando. O processamento é mais simples, as falhas são menores, e ninguém precisa concordar sobre regra de aspas.

Converter entre os dois é mecânico numa direção e exige cuidado na outra: de CSV para TSV é preciso conferir que nenhum campo contém tabulação, e de TSV para CSV é preciso acrescentar aspas onde um campo contém vírgula. Um conversor que pula qualquer um dos dois produz um arquivo com aparência correta e colunas silenciosamente deslocadas.

Lendo um arquivo grande

O TSV faz streaming, que é sua outra vantagem discreta. Um arquivo de qualquer tamanho pode ser lido linha por linha sem carregar tudo de uma vez, então uma exportação de vários gigabytes fica administrável de um jeito que a planilha equivalente não fica.

Para qualquer coisa genuinamente grande e analisada repetidamente, Parquet é o destino melhor: colunar, comprimido, tipado, e dramaticamente mais rápido para as consultas que as pessoas de fato rodam. TSV é o formato certo para troca e o errado para um conjunto de dados que você vai ler cem vezes.

Os dados, num lugar só

Identificadores e procedência do formato TSV.
Extensão.tsv, .tab
Tipo de mídiatext/tab-separated-values
Primeira publicação1993
EspecificaçãoIANA text/tab-separated-values