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.