O Que É CSV? Comma-Separated Values Explicado
CSV (Comma-Separated Values) é um formato de texto puro para dados tabulares onde cada linha é uma row e as vírgulas separam as colunas.
CSV é a forma mais simples de mover dados tabulares entre programas. Toda planilha, banco de dados e ferramenta de dados consegue importá-lo e exportá-lo. Sua simplicidade também é sua fraqueza: não há uma única spec oficial, então quoting e casos de borda diferem entre ferramentas - o que importa quando um pipeline de dados parseia CSV no CI.
O que CSV é
Um arquivo CSV é texto puro onde cada linha é um registro e os campos dentro de um registro são separados por vírgulas. Uma primeira linha opcional guarda os cabeçalhos das colunas. Ele mapeia naturalmente para uma tabela ou planilha, e é por isso que é o formato universal de intercâmbio para rows de dados.
Quoting e escaping
A parte complicada são dados que contêm vírgulas, aspas ou quebras de linha. A convenção é envolver tal campo em aspas duplas e escapar uma aspa embutida duplicando-a. As ferramentas discordam nos detalhes finos, então um campo com uma vírgula dentro é uma fonte clássica de CSV mal parseado.
Por que CSV não tem um padrão real
Há uma spec informal (RFC 4180), mas na prática delimitadores, line endings, encodings e quoting variam. Um arquivo exportado no Windows pode usar line endings CRLF, uma exportação europeia pode usar ponto e vírgula em vez de vírgulas, e os encodings variam de UTF-8 a code pages legadas.
CSV em pipelines de dados e CI
Pipelines de dados frequentemente ingerem CSV de exportações e APIs, depois o validam e o transformam. No CI você testa essas transformações contra pequenas fixtures CSV, e você pode ter um job que verifica se um CSV de relatório gerado tem as colunas e a contagem de rows esperadas antes de publicá-lo.
# Validate a generated CSV in CI
steps:
- run: python export_report.py > report.csv
- run: |
header=$(head -1 report.csv)
test "$header" = "date,builds,minutes"Nota da Latchkey
Jobs que manipulam CSV são compute puro e frequentemente baixam datasets de amostra. Na Latchkey você pode fazer cache dessas fixtures entre execuções, para que um job de validação de dados não esteja re-baixando os mesmos arquivos de amostra a cada build.
Principais conclusões
- CSV é texto puro onde cada linha é uma row e vírgulas separam colunas, ideal para dados tabulares.
- As regras de quoting e escaping para vírgulas e aspas embutidas variam entre ferramentas, então CSV é fácil de parsear errado.
- Pipelines de dados ingerem e emitem CSV, e o CI deve validá-lo contra fixtures e colunas esperadas.