Los amigos no dejan que sus amigos exporten a CSV
Por qué CSV sigue siendo dominante
- Compatible de forma universal: casi cualquier herramienta empresarial, base de datos e idioma puede importar/exportar CSV, a menudo sin bibliotecas დამატъales.
- Funciona para usuarios no técnicos: la gente conoce “exportar/importar CSV” y “abrir en Excel/Sheets”; muchos flujos de trabajo, respuestas a FOIA y sistemas heredados se construyen en torno a ello.
- Fácil de inspeccionar visualmente y editar a mano en archivos pequeños o medianos. Esto es fundamental para depurar integraciones e incidentes de “un archivo roto”.
- Para tamaños de datos modestos (de MB a pocos GB), el rendimiento suele ser suficiente, especialmente si se comprime.
Problemas prácticos con CSV
- “Familia” de formatos poco especificada: distintos delimitadores (
,,;,\t,|), reglas de entrecomillado, presencia de encabezados, codificaciones (UTF‑8 vs heredadas), separadores decimales, formatos de fecha y representaciones de null. - Los archivos reales a menudo incumplen RFC 4180: entrecomillado inconsistente, escapado incorrecto, comentarios, filas desalineadas, CSV anidado en campos. Un único parser robusto para “todos los CSV” es, en la práctica, imposible.
- Problemas de configuración regional y de Excel: Excel cambia el separador según la locale, adivina tipos, convierte IDs a números/fechas/notación científica, elimina ceros a la izquierda y puede corromper datos silenciosamente al guardar. A menudo se informa que LibreOffice es más sensato.
- La codificación y el esquema están fuera de banda; los consumidores deben adivinar tipos y formatos, lo que lleva a errores sutiles.
Debate sobre “legible por humanos”
- A favor: La legibilidad humana se considera una gran virtud. Puedes inspeccionar, comparar y corregir datos quirúrgicamente sin código. CSV se considera duradero y preparado para el futuro.
- En contra: La legibilidad humana fomenta productores improvisados y con errores (“simplemente une con comas”), empeorando la interoperabilidad. Algunos sostienen que binario + buenas herramientas supera a texto + mal uso.
Parquet y otras alternativas
- Se elogia Parquet para canalizaciones de datos: columnar, tipado, consciente del esquema, eficiente para grandes conjuntos de datos y lecturas parciales; comprime bien (comparable a csv.gz).
- Críticas: especificación más compleja, soporte de bibliotecas irregular o doloroso en algunos lenguajes/entornos, peculiaridades de versiones, no utilizable directamente en Excel y no ideal para casos de uso de streaming por filas.
- Otros formatos sugeridos: archivos SQLite, Arrow, Avro, Protobuf/Cap’n Proto, JSON/NDJSON, TSV, XML con esquema, CSVY (CSV + metadatos YAML) y “valores separados por Unicode/ASCII” usando caracteres delimitadores dedicados.
Cuándo CSV es apropiado y cuándo no
- Amplio consenso:
- Mantener CSV (o XLSX) para interlocutores externos y análisis ad hoc en hojas de cálculo.
- Considerar Parquet/SQLite/Arrow/etc. para canalizaciones internas, grandes o sensibles al rendimiento, cuando controlas ambos extremos.
- Tensión central: CSV es técnicamente frágil pero está socialmente arraigado. Muchos ven irrealista reemplazarlo a gran escala; otros argumentan que al menos deberíamos dejar de usarlo como formato predeterminado para la integración “seria” sistema a sistema.