- Aunque con frecuencia se presentan formatos "superiores" para reemplazar a CSV, la mayoría pasa por alto las verdaderas fortalezas de CSV al basarse en comparaciones sesgadas
- Este texto no dice que CSV sea perfecto, sino que busca destacar sus ventajas subestimadas
- Frente al ambiente en el que odiar a CSV parece verse cool, recuerda su verdadero valor
1. CSV es extremadamente simple
- La definición de CSV es literalmente la de su nombre: "valores separados por comas"
- Las filas se separan por saltos de línea y las columnas por comas
- Si un valor contiene comas o saltos de línea, se encierra entre comillas, y las comillas en sí se representan con comillas dobles
- Cualquiera puede entenderlo y usarlo de forma intuitiva, sin especificaciones complejas
- Aun así, sigue siendo necesario usar un parser de CSV dedicado para un parseo correcto
2. CSV es una idea colectiva
- No tiene propietario ni está privatizado
- Existe el RFC 4180, pero la mayoría lo considera solo una referencia
- Es un formato libre basado en reglas comunes que los desarrolladores de todo el mundo comparten de manera implícita
3. CSV es texto
- Es un formato de texto plano legible por personas, como JSON, YAML o XML
- Puede abrirse con cualquier editor de texto y revisar su contenido sin herramientas adicionales
- También permite elegir libremente la codificación
4. CSV está optimizado para streaming
- Como se lee línea por línea, el consumo de memoria es muy bajo
- Incluso con código simple, es posible procesar varios gigabytes de datos usando solo unos pocos KB de memoria
- Los formatos orientados a columnas, como Parquet, dificultan el procesamiento por streaming y requieren buffering complejo
- Su desventaja es que, aunque solo quieras ver una columna específica, igual tienes que leer toda la fila
5. CSV es fácil de anexar
- Es muy fácil abrir un archivo en modo append(
a+) y agregar nuevas filas al final
- En cambio, en formatos orientados a columnas como Parquet, agregar filas es ineficiente y complejo
6. CSV admite tipado dinámico
- Como no tiene tipos fijos, permite interpretar los datos con flexibilidad
- Ejemplo: JavaScript no puede representar correctamente enteros de 64 bits, pero CSV puede usarse sin esa limitación
- Tiene ventajas en compatibilidad y flexibilidad entre lenguajes
- Pero una interpretación incorrecta puede causar errores → hay que usarlo con cuidado
- Si se requiere alto rendimiento, también es posible procesarlo directamente a nivel binario sin decodificar el texto
7. CSV es conciso
- Como el encabezado existe solo al principio del archivo, casi no hay repetición del formato
- JSON y XML tienen mucho overhead por la repetición de claves
- La representación de cadenas ya es compacta, y el overhead del formato en sí (comas, comillas, etc.) es muy bajo
8. Incluso un CSV invertido sigue siendo válido
- CSV sigue siendo un CSV válido incluso si se invierte a nivel de bytes
- Esto se debe al método de escape con comillas dobles, ya que es una forma de escape palindrómica
- Gracias a esta característica, es posible leer de manera muy eficiente la parte final de un archivo CSV
- Ejemplo: al reanudar un proceso interrumpido, basta con leer las últimas líneas del archivo para reiniciarlo
9. A Excel no le gusta CSV
- Si Excel considera incómodo un formato, quizá eso sea una señal de que vas por el camino correcto
3 comentarios
¡Lo simple es lo mejor!
¡Peor es mejor!
Opinión de Hacker News
A algunas personas les gustan los archivos CSV e INI porque son simples, basados en texto, no tienen tipos codificados en el formato y están compuestos solo de cadenas
CSV es elegante, pero tiene un defecto fatal: las comillas tienen un efecto "no local"
Lo mejor de CSV es que cualquiera puede escribir un parser en 30 minutos
Quienes aman CSV probablemente nunca han tenido que encargarse de prevenir inyecciones en CSV en un entorno corporativo
Hay muchas razones para que guste CSV
Alguien ha estado desarrollando recientemente una solución basada en Raspberry Pi
Lo poco divertido de CSV es que los parsers y serializadores escritos rápido repiten errores comunes al manejar las comillas
csvSi esto de verdad fuera una carta de amor, habría estado escrita en formato CSV
La réplica en favor de JSON no resulta muy convincente
Como alguien a quien le gustan los formatos modernos, cuando hay dudas usa CSV o JSONL
grepy permiten streaming