Cookies de estadística y publicidad
Usamos cookies de estadística y de publicidad, y ambas van a Google. Si rechazas, para ti no cambia nada visible.Ir a la página de privacidad
CSV
Una tabla en texto plano. La lee cualquier hoja de cálculo, cualquier base de datos y cualquier herramienta de análisis. Ojo: aquí Excel separa con punto y coma.
CSV
CSV es un formato de texto plano que se abre en cualquier editor. Se usa para mover datos entre programas.
La extensión es .csv y el nombre completo, Comma-Separated Values. Ambos importan menos que lo que el archivo puede contener, y de eso trata el resto de esta página.
Se remonta a 1972. La especificación es RFC 4180.
A un formato que lleva tanto tiempo siendo legible se le puede confiar algo que quieras recuperar dentro de diez años.
Está publicada entera, así que cualquiera puede implementarla leyendo el documento en vez de a base de inspeccionar archivos. Por eso aparece en tantos programas, y por eso los archivos escritos hace veinte años siguen abriéndose hoy. Publicada no quiere decir libre de regalías: cuando un formato envuelve un códec, la licencia de las patentes es un asunto aparte que la norma no resuelve.
CSV guarda su contenido exactamente. Volver a guardarlo no cambia nada, así que puedes abrirlo, editarlo y guardarlo tantas veces como quieras sin acumular daño; eso es lo que lo convierte en un formato de trabajo y no de entrega.
CSV no tiene sintaxis de comentarios. Todo lo explicativo tiene que vivir fuera del archivo, y conviene saberlo antes de elegirlo para algo que una persona vaya a editar a mano.
Microsoft Excel, LibreOffice Calc y pandas lo leen, y también la mayoría de programas del mismo tipo.
Cuando un archivo no se abre, el formato rara vez es el problema: lo más habitual es que el programa sea anterior al formato. Convertir a algo más antiguo es la salida fiable, y para eso está el resto de este sitio.
Ningún navegador lo lee.
Ese es el motivo más frecuente para convertirlo: no que el formato sea malo, sino que el sitio donde quieres mostrar el archivo no sabe leerlo.
CSV está pensado para abrirse y cambiarse. Guarda el archivo en este formato mientras el trabajo siga en marcha y exporta desde él cada vez que haga falta una copia terminada.
Las quejas recurrentes: los tipos de columna se adivinan al importar en lugar de declararse.
Nada de esto es motivo para evitar el formato. Son las cosas que conviene conocer antes de que una de ellas te sorprenda, que es una afirmación distinta y más útil.
Un CSV son filas de valores separados por comas, y esa descripción aguanta hasta que un valor contiene una coma. Entonces hace falta entrecomillar, y los valores entrecomillados necesitan una forma de contener comillas, y los valores necesitan una forma de contener saltos de línea. En cada uno de esos tres puntos las implementaciones empiezan a discrepar.
El RFC 4180 se publicó en 2005 para poner por escrito las convenciones, y dice expresamente que documenta la práctica existente en lugar de definir un estándar de obligado cumplimiento. Veinte años después sigue habiendo software que no lo respeta. Ese es el punto de partida honesto: CSV es una familia de formatos casi compatibles compartiendo una extensión.
Un valor que contenga una coma, unas comillas o un salto de línea tiene que ir envuelto en comillas dobles, y unas comillas dentro de ese valor se escriben dos veces seguidas. Hecho así, un campo puede contener cualquier cosa, incluido un párrafo entero con saltos de línea dentro.
Hecho mal, el daño es silencioso. Unas comillas sin escapar hacen que el analizador se trague el resto del archivo dentro de un solo campo. Una coma dentro de una dirección sin entrecomillar desplaza una columna todas las columnas siguientes, y solo en esa fila: un archivo de diez mil filas puede estar correcto salvo en las once que mencionaban una empresa con una coma en el nombre, y nada avisa.
Donde el separador decimal es la coma — España y buena parte de Sudamérica, además de casi toda la Europa continental — las hojas de cálculo exportan con punto y coma, porque un archivo lleno de «1,50» sería imposible de interpretar de otra forma. La extensión sigue siendo .csv y nada en el archivo lo anuncia.
El tabulador es la tercera opción habitual y es la razón de que exista TSV, porque un tabulador casi nunca aparece dentro de un valor. Si un CSV se abre como una sola columna, lo primero que hay que mirar es el separador: el archivo está bien y quien lo leyó adivinó mal. Aquí el selector de separador acepta detección automática, coma, punto y coma, tabulador y barra vertical, para poder decírselo en vez de confiar.
Un CSV no tiene tipos. En el archivo están los caracteres 0 8 0 0 1, y que eso se convierta en el número 8001 o en el texto «08001» lo decide enteramente lo que lo lea.
De ahí sale toda la familia de quejas sobre hojas de cálculo que estropean datos: códigos postales que pierden el cero de delante — el de Barcelona es exactamente ese caso —, referencias de producto que se convierten en fechas, identificadores largos a los que el coma flotante les come los últimos dígitos. Nada de eso está en el archivo: pasa al abrirlo, y la defensa es importar en lugar de abrir y declarar como texto las columnas delicadas.
Un CSV no declara en ninguna parte su codificación de caracteres. UTF-8 es lo razonable y es lo que escribe hoy casi todo; Excel en Windows ha asumido históricamente una página de códigos regional, que es la razón de que una exportación llena de eñes y acentos se abra convertida en jeroglíficos.
El apaño de siempre es escribir una marca de orden de bytes: tres bytes invisibles al principio que le dicen a Excel que el archivo es UTF-8. Funciona, y crea otro problema, porque muchos analizadores ven esos bytes como parte del nombre de la primera columna, así que una comparación contra «id» falla sin decir nada. No hay ninguna combinación que contente a los dos bandos, lo cual resume bastante bien el formato entero.
En leerse a chorro. Un archivo más grande que la memoria se puede recorrer fila a fila con una herramienta que nunca guarda más de una línea, y por eso lo hablan las tuberías de datos, las importaciones de bases de datos y las utilidades de línea de comandos, y por eso una exportación de cinco gigabytes es manejable.
Y en ser transparente. Es texto, así que nada puede esconderse dentro: ni macros, ni enlaces externos, ni fórmulas que vayan a buscar otro archivo. Precisamente por eso los sistemas con cierto cuidado en seguridad piden CSV y no un libro de Excel, y eso es una propiedad real y no un premio de consolación.
Cinco costumbres evitan casi todos los problemas. Usar UTF-8 sin marca de orden de bytes. Entrecomillar todo campo que pueda contener el separador, unas comillas o un salto de línea — o entrecomillarlo todo, que es legal y no cuesta nada. Poner una fila de encabezados con nombres cortos y sin ambigüedad. Escribir las fechas en forma ISO, año primero, que ordenan bien y no se pueden confundir con el formato de otro país. Y decir qué separador has usado si no es la coma.
Nada de eso lo impone nadie, y por eso hay que hacerlo a conciencia. Un CSV que cumple esas cinco reglas se abre bien en cualquier herramienta que vaya a recibirlo alguna vez.
Las conversiones entre formatos de datos — a JSON, a NDJSON, a TSV, a XLSX, a SQL o a Parquet — ocurren en el navegador, con un tope de 100 MB por archivo, y el separador se elige en la propia página. En sentido contrario, cuando el origen es un JSON o un NDJSON con objetos anidados, la estructura se aplana en columnas: una columna por hoja del árbol, con el camino separado por puntos como nombre de columna. Es lo único razonable que se puede hacer contra una tabla, y conviene saberlo antes de que aparezcan cincuenta columnas.
La excepción es CSV a PDF, que es de las pocas conversiones de este sitio que no se resuelven en tu equipo: la hace LibreOffice en un contenedor nuestro, con un tope de 25 MB por archivo. La página del par lo dice, y la cifra que aparece en su ficha es la que manda.
| Extensión | .csv |
|---|---|
| Tipo de medio | text/csv |
| Primera publicación | 1972 |
| Especificación | RFC 4180 |
El separador no es el que esperaba el programa: casi siempre es un punto y coma, que es lo que exportan las hojas de cálculo en los países con coma decimal, o un tabulador. El archivo está bien; usa el diálogo de importación para indicar qué carácter separa los valores.
Un CSV no tiene tipos, así que Excel adivina uno por columna y trata como número un código formado por dígitos. Importa el archivo — Datos, y luego Desde texto/CSV — y marca esas columnas como Texto antes de cargarlas, o envía un XLSX, donde los tipos van declarados.
Envuelve el valor en comillas dobles; unas comillas dentro de un valor entrecomillado se escriben dos veces. Bien hecho, un campo admite comas, comillas e incluso saltos de línea. Mal hecho, todas las columnas siguientes se desplazan una posición y nadie da un error.
El archivo no declara su codificación y quien lo abrió tuvo que adivinarla. Guárdalo en UTF-8. Para Excel en Windows ayuda una marca de orden de bytes, a costa de que otros analizadores vean esos tres bytes pegados al nombre de la primera columna.
El RFC 4180 recoge las convenciones habituales y dice expresamente que describe la práctica existente en lugar de definir un estándar. Bastante software sigue desviándose, y por eso conviene pensar en el CSV como una familia de formatos casi compatibles.
El separador. TSV usa tabuladores, que casi nunca aparecen dentro de un valor, así que apenas hace falta entrecomillar y desaparece toda la clase de problemas de la coma dentro de un campo. Es la opción más segura cuando los dos extremos se ponen de acuerdo en usarla.