Valores separados por comas ( CSV ) es un formato de datos de texto plano para almacenar datos tabulares donde los campos (valores) de un registro están separados por una coma y cada registro es una línea (es decir, separada por salto de línea ). CSV se usa comúnmente en software que generalmente maneja datos tabulares como una base de datos o una hoja de cálculo . [ 3 ] Entre los beneficios citados para usar CSV se incluyen la simplicidad de uso y la legibilidad humana . [ 4 ] CSV es una forma de valores separados por delimitadores . Un archivo CSV es un archivo que contiene datos con formato CSV.
CSV no se limita a una codificación de caracteres particular [ 1 ] pero debería y se usa comúnmente con UTF-8 , particularmente porque no proporciona una forma de indicar la codificación de caracteres.
Historia
El formato CSV es anterior a las computadoras personales por más de una década. El compilador IBM Fortran (nivel H extendido) bajo OS/360 admitía entrada/salida dirigida por lista ("forma libre"), con comas entre los valores, en 1972. [ 5 ] La entrada/salida dirigida por lista se definió en FORTRAN 77 , aprobado en 1978. La entrada dirigida por lista usaba comas o espacios como delimitadores, por lo que las cadenas de caracteres sin comillas no podían contener comas ni espacios. [ 6 ]
El término "valores separados por comas" y la abreviatura "CSV" se utilizaban en 1983. [ 7 ] El manual del ordenador Osborne Executive, que incluía la hoja de cálculo SuperCalc , documenta la convención de comillas CSV que permite que las cadenas contengan comas incrustadas. [ 8 ]
Las listas de valores separados por comas son más fáciles de escribir (por ejemplo, en tarjetas perforadas ) que los datos alineados a columnas fijas, y eran menos propensas a producir resultados incorrectos si un valor se perforaba una columna fuera de su ubicación prevista.
Los archivos separados por comas se utilizan para el intercambio de información de bases de datos entre máquinas con arquitecturas diferentes. El formato de texto plano de los archivos CSV evita en gran medida incompatibilidades como el orden de bytes y el tamaño de las palabras . Los archivos son en gran medida legibles para los humanos, por lo que resulta más fácil trabajar con ellos incluso en ausencia de documentación o comunicación perfectas. [ 9 ]
La principal iniciativa de estandarización —transformar la " definición difusa de facto " en una más precisa y de jure— se produjo en 2005 con el RFC 4180 , que definió CSV como un tipo de contenido MIME . [ 10 ] Posteriormente, en 2013, algunas de las deficiencias del RFC 4180 fueron abordadas mediante una recomendación del W3C. [ 11 ]
En 2014, la IETF publicó el RFC 7111, que describe la aplicación de fragmentos URI a documentos CSV. El RFC 7111 especifica cómo se pueden seleccionar rangos de filas, columnas y celdas de un documento CSV utilizando índices de posición. [ 12 ]
En 2015, el W3C , en un intento por mejorar CSV con semántica formal , publicó los primeros borradores de recomendaciones para estándares de metadatos CSV, que comenzaron como recomendaciones en diciembre del mismo año. [ 13 ]
Especificación
CSV se puede describir informalmente como datos de texto plano que consisten en un registro por línea, donde cada línea tiene la misma secuencia de campos separados por una coma. [ 1 ] [ 14 ] [ 15 ] Para un ejemplo sencillo:
id,nombre,correo electrónico 1,John,john.doe@example.com 2, Jane, janey72@test.org
El formato se describe de forma más formal en la norma técnica RFC 4180 de 2005 , que codifica el formato CSV y define el tipo MIME para el manejo de campos basados en texto. Entre sus requisitos: text/csv
- Una línea se termina según la secuencia de retorno de carro y salto de línea (CR/LF) al estilo MS-DOS.
- Un terminador de línea es opcional para la última línea.
- Los datos pueden comenzar con un registro de encabezado, pero como no hay forma de comprobar si la primera línea es, de hecho, un encabezado, se requiere precaución al importarlos.
- Cada registro debe contener el mismo número de campos.
- Un campo que contenga una coma, una comilla doble o un carácter de terminación de línea debe ir entre comillas dobles.
- Cualquier campo puede ir entre comillas dobles.
- Si un campo está encerrado entre comillas dobles, entonces una comilla doble incrustada en el campo debe representarse mediante una secuencia de dos comillas dobles.
Un ejemplo más complejo, con algunos campos encerrados entre comillas dobles y campos que contienen caracteres especiales (comillas dobles, terminadores de línea, comas):
Año, Marca, Modelo, Descripción, Precio 1997, Ford, E350,"ac, abs, luna", 3000.00 1999, Chevy,"Venture ""Edición Extendida","","",4900.00 1999,Chevy,"Venture ""Edición extendida, muy grande","","",5000.00 1996, Jeep, Grand Cherokee,"¡DEBO VENDERLO! Aire acondicionado, techo corredizo, totalmente equipado",4799.00
Este ejemplo ilustra que un archivo CSV no se puede analizar simplemente dividiendo los datos por terminadores de línea en líneas y luego cada línea por comas. Los datos anteriores, cuando se analizan correctamente, se pueden representar como esta tabla:
Los desafíos comunes con CSV incluyen:
- Es posible que los programas no admitan caracteres de terminación de línea dentro de un campo, incluso cuando estén correctamente entrecomillados.
- Los programas pueden confundir una línea de encabezado con datos o interpretar la primera línea de datos como un encabezado.
- Es posible que las comillas dobles en un campo no se analicen correctamente.
En 2011, Open Knowledge Foundation (OKF) y varios socios crearon un grupo de trabajo sobre protocolos de datos, que posteriormente evolucionó hasta convertirse en la iniciativa Frictionless Data. Uno de los formatos principales que publicaron fue el paquete de datos tabulares. Este paquete se basaba en gran medida en CSV, utilizándolo como formato principal de transporte de datos y añadiendo metadatos básicos de tipo y esquema. (CSV carece de información de tipo para distinguir la cadena 1del número 1). [ 16 ] La iniciativa Frictionless Data también ha proporcionado un formato estándar de descripción de dialectos CSV para describir diferentes dialectos de CSV, por ejemplo, especificando el separador de campos o las reglas de comillas. [ 17 ]
En 2013, el grupo de trabajo "CSV en la Web" del W3C comenzó a especificar tecnologías que proporcionaran mayor interoperabilidad para aplicaciones web que utilizaran CSV o formatos similares. [ 18 ] El grupo de trabajo completó su labor en febrero de 2016 y se cerró oficialmente en marzo de 2016 con la publicación de un conjunto de documentos y recomendaciones del W3C [ 19 ] para modelar "Datos Tabulares" [ 13 ] y mejorar CSV con metadatos y semántica . Si bien la corrección de los datos CSV se puede comprobar fácilmente, la validación y la forma canónica de las pruebas están menos desarrolladas, en comparación con formatos de datos más precisos, como XML y SQL , que ofrecen tipos más ricos y validación basada en reglas. [ 20 ]
Aplicaciones
CSV se usa comúnmente para el intercambio de datos y es ampliamente compatible con aplicaciones orientadas a datos . Se usa frecuentemente para transferir datos tabulares entre programas que operan de forma nativa con datos incompatibles , a menudo en formatos propietarios o no documentados. [ 1 ] [ 21 ] [ 22 ] Un escenario común es transferir datos de una base de datos a una hoja de cálculo que, en general, usan formatos completamente diferentes. La mayoría de los sistemas de bases de datos pueden exportar como CSV y la mayoría de los programas de hojas de cálculo pueden importar datos en formato CSV, aprovechando CSV como formato intermedio. Todas las principales plataformas de comercio electrónico ofrecen soporte para exportar datos como archivos CSV. [ 23 ]
CSV también se utiliza para almacenar datos. Las herramientas comunes de ciencia de datos, como Pandas, incluyen la opción de exportar datos a CSV para almacenamiento a largo plazo. [ 24 ] Las ventajas de CSV para el almacenamiento de datos incluyen la simplicidad de CSV, que facilita la implementación y la creación de archivos CSV, y la rapidez en comparación con otros formatos de datos; la legibilidad humana, que simplifica la edición o corrección de datos, [ 25 ] y la alta compresibilidad, que da como resultado archivos de datos más pequeños. [ 26 ] Por otro lado, CSV no admite relaciones de datos más complejas y no distingue entre valores nulos y vacíos, y en aplicaciones donde se necesitan estas características, se prefieren otros formatos.
Más de 200 portales de datos locales, regionales y nacionales, como los del gobierno del Reino Unido y la Comisión Europea , utilizan archivos CSV con catálogos de datos estandarizados . [ 27 ]
Algunas aplicaciones utilizan CSV como formato de intercambio de datos para mejorar su interoperabilidad , exportando e importando archivos CSV. Otras lo utilizan como formato interno. CSV es compatible con casi todas las hojas de cálculo y sistemas de gestión de bases de datos.
Las hojas de cálculo, incluidas Apple Numbers , LibreOffice Calc y Apache OpenOffice Calc, admiten la lectura de archivos CSV. Microsoft Excel también admite un dialecto de CSV con restricciones en comparación con otros programas de hojas de cálculo (por ejemplo, a partir de 2019Excel aún no puede exportar archivos CSV con la codificación de caracteres UTF-8, de uso común, y el separador no se establece como coma. El importador CSV de LibreOffice Calc es, en realidad, un importador de texto delimitado más genérico, que admite varios separadores simultáneamente, así como el recorte de campos.
Varias bases de datos relacionales admiten guardar los resultados de las consultas en un archivo CSV. PostgreSQL proporciona el COPYcomando, que permite guardar y cargar datos desde y hacia un archivo. guarda el contenido de una tabla en un archivo llamado . [ 28 ] Algunas bases de datos relacionales, cuando utilizan SQL estándar, ofrecen un envoltorio de datos externos (FDW). Por ejemplo, PostgreSQL ofrece los comandos [ 29 ] y [ 30 ] para configurar cualquier variante de CSV. Bases de datos como Apache Hive ofrecen la opción de expresar CSV o .csv.gz como un formato de tabla interno.COPY(SELECT*FROMarticles)TO'/home/wikipedia/file.csv'(FORMATcsv)articles/home/wikipedia/file.csvCREATEFOREIGNTABLECREATEEXTENSIONfile_fdw
Los programas que trabajan con CSV pueden tener límites en el número máximo de filas que pueden contener los archivos CSV. Algunos ejemplos son Microsoft Excel (1.048.576 filas), Apple Numbers (1.000.000 de filas), Google Sheets (10.000.000 de celdas) y OpenOffice y LibreOffice (1.048.576 filas). [ 31 ]
Véase también
- Comparación de formatos de serialización de datos
- Colisión de delimitadores : problema de formato causado por datos que contienen un delimitador.
- Base de datos de archivo plano : base de datos almacenada como datos planos.
- Valores separados por tabulaciones : formato de texto para datos tabulares que utiliza una tabulación entre los campos.
Referencias
- 1 2 3 4 Shafranovich, Y. (octubre de 2005). Formato común y tipo MIME para archivos CSV . IETF . pág. 1. doi : 10.17487/RFC4180 . RFC 4180 .
- 1 2 "commaSeparatedText" . Documentación para desarrolladores de Apple: Identificadores de tipo uniforme . Apple Inc. Archivado del original el 22/05/2023 . Consultado el 22/05/2023 .
- ↑ "Importar o exportar archivos de texto (.txt o .csv)" . Soporte técnico de Microsoft . Consultado el 16 de agosto de 2023 .
- ↑ "¿Qué es un archivo CSV?: Una guía completa" . flatfile.com . Consultado el 28 de octubre de 2024 .
- ↑ Información general sobre los productos de programas IBM FORTRAN para el sistema operativo y el componente CMS de VM/370 (PDF) (primera edición), julio de 1972, pág. 17, GC28-6884-0, archivado (PDF) del original el 4 de marzo de 2016 , recuperado el 5 de febrero de 2016. Para los usuarios familiarizados con los procesadores predecesores FORTRAN IV G y H ,
estas son las principales nuevas capacidades del lenguaje.
- ↑ "List-Directed I/O" , Referencia del lenguaje Fortran 77 , Oracle, archivado del original el 26/02/2021 , recuperado el 26/10/2012.
- ↑ "SuperCalc², paquete de hoja de cálculo para IBM, CP/M" . Consultado el 11 de diciembre de 2017 .
- ↑ "Estructura de archivo en formato de valores separados por comas" . 1983. Consultado el 11 de diciembre de 2017 .
- ↑ "CSV, Valores Separados por Comas (RFC 4180)" . Biblioteca del Congreso . Consultado el 22 de septiembre de 2025 .
- ↑ Formato común y tipo MIME para archivos de valores separados por comas (CSV) . IETF . doi : 10.17487/RFC4180 . RFC 4180. Consultado el 22 de diciembre de 2020 .
- ↑ Véase sparql11-results-csv-tsv , la primera recomendación del W3C definida en CSV y que subsana algunas de las deficiencias de la RFC 4180.
- ↑ Identificadores de fragmentos URI para el tipo de medio text/csv . IETF . doi : 10.17487/RFC7111 . RFC 7111. Consultado el 22 de diciembre de 2020 .
- 1 2 "Modelo para datos tabulares y metadatos en la web" . 17 de diciembre de 2015. Recuperado el 23 de marzo de 2016 .(Recomendación del W3C)
- ↑ "Formato de archivo estándar de valores separados por comas (CSV)" . Edoceo, Inc. Archivado del original el 14 de julio de 2020. Recuperado el 4 de junio de 2014 .
- ↑
- Creativyst (2010), Cómo: El formato de archivo de valores separados por comas (CSV) , creativyst.com, archivado del original el 4 de abril de 2021 , recuperado el 24 de mayo de 2010.
- ↑ "Paquete de datos tabulares" . Especificaciones de datos sin fricción .
- ↑ "Dialecto CSV" . Especificaciones de datos sin fricción .
- ↑ "Grupo de trabajo CSV en la web" . W3C CSV WG. 2013. Consultado el 22 de abril de 2015 .
- ↑ "CSV en el repositorio web" . GitHub .(en GitHub)
- ↑ "Reglas o esquemas" . Proyecto CsvPath. 2024. Consultado el 13 de febrero de 2025 .
- ↑ "CSV - Valores separados por comas" . Archivado del original el 7 de marzo de 2021. Consultado el 2 de diciembre de 2017 .
- ↑ "Archivos CSV" . Archivado del original el 30 de abril de 2021. Consultado el 4 de junio de 2014 .
- ↑ "Plataformas de comercio electrónico compatibles con CSV" . RFM Calc . Consultado el 9 de marzo de 2025 .
- ↑ "pandas.DataFrame.to_csv — documentación de pandas 2.0.3" . pandas.pydata.org . Consultado el 16 de agosto de 2023 .
- ↑ "Formato CSV: historia, ventajas y por qué sigue siendo popular" . ByteScout . 15 de septiembre de 2021. Consultado el 16 de agosto de 2023 .
- ↑ "Comparación de diferentes formatos de archivo en Big Data" . www.adaltas.com . 23 de julio de 2020. Consultado el 16 de agosto de 2023 .
- ↑ Mahmud, SM Hasan; Hossin, Md Altab; Jahan, Hosney; Noori, Sheak Rashed Haider; Bhuiyan, Touhid (2018). CSV-ANNOTATE: Genera tablas anotadas a partir de un archivo CSV . Conferencia Internacional de 2018 sobre Inteligencia Artificial y Big Data (ICAIBD). IEEE. págs. 71–75 . doi : 10.1109/ICAIBD.2018.8396169 . ISBN 978-1-5386-6987-7.
- ↑ "Documentación: 14: COPIA" . PostgreSQL . Consultado el 12 de mayo de 2024 .
- ↑ "Documentación: 14: F.35. postgres_fdw" . PostgreSQL. 10-02-2022 . Consultado el 04-03-2022 .
- ↑ "Documentación: 14: F.14. file_fdw" . PostgreSQL. 10-02-2022 . Consultado el 04-03-2022 .
- ↑ "Comprender CSV y los límites de filas" . Archivado del original el 15 de enero de 2021. Consultado el 28 de febrero de 2021 .
Lecturas adicionales
- "Guía de administración de IBM DB2: formatos de archivo para CARGAR, IMPORTAR y EXPORTAR" . IBM . Archivado del original el 13 de diciembre de 2016. Consultado el 12 de diciembre de 2016 .(Incluye descripciones de archivos ASCII delimitados (.DEL) (incluidos los separados por comas y punto y coma) y archivos ASCII no delimitados (.ASC) para la transferencia de datos).
- Formatos separados por delimitadores
- Formatos abiertos
- formatos de archivo de hoja de cálculo