stringtranslate.com

Valores Separados por Comas

Los valores separados por comas ( CSV ) es un formato de archivo de texto que utiliza comas para separar valores y nuevas líneas para separar registros. Un archivo CSV almacena datos tabulares (números y texto) en texto sin formato , donde cada línea del archivo normalmente representa un registro de datos . Cada registro consta de la misma cantidad de campos y estos están separados por comas en el archivo CSV. Si el delimitador de campo en sí puede aparecer dentro de un campo, los campos pueden estar entre comillas. [3]

El formato de archivo CSV es un tipo de formato de archivo separado por delimitadores . [4] Los delimitadores que se utilizan con frecuencia incluyen la coma, la tabulación , el espacio y el punto y coma. Los archivos separados por delimitadores a menudo reciben una extensión ".csv" incluso cuando el separador de campo no es una coma. Muchas aplicaciones o bibliotecas que consumen o producen archivos CSV tienen opciones para especificar un delimitador alternativo. [5]

La falta de cumplimiento del estándar CSV RFC 4180 requiere la compatibilidad con una variedad de formatos CSV en el software de entrada de datos. A pesar de este inconveniente, CSV sigue estando muy extendido en las aplicaciones de datos y es ampliamente compatible con una variedad de software, incluidas aplicaciones de hojas de cálculo comunes como Microsoft Excel . [6] Los beneficios citados a favor de CSV incluyen la legibilidad humana y la simplicidad del formato. [7]

Aplicaciones

CSV es un formato de intercambio de datos común que cuenta con un amplio respaldo en aplicaciones científicas, comerciales y de consumo. Entre sus usos más comunes está mover datos tabulares [8] [9] entre programas que operan de forma nativa en formatos incompatibles (a menudo propietarios o no documentados). [1] Por ejemplo, un usuario puede necesitar transferir información desde un programa de base de datos que almacena datos en un formato propietario, a una hoja de cálculo que utiliza un formato completamente diferente. La mayoría de los programas de bases de datos pueden exportar datos como CSV. La mayoría de los programas de hojas de cálculo pueden leer datos CSV, lo que permite utilizar CSV como formato intermedio al transferir datos de una base de datos a una hoja de cálculo.

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 su almacenamiento a largo plazo. [10] Los beneficios de CSV para el almacenamiento de datos incluyen la simplicidad de CSV, que hace que el análisis y la creación de archivos CSV sean fáciles de implementar y rápidos en comparación con otros formatos de datos, la legibilidad humana que simplifica la edición o corrección de datos, [11] y la alta compresibilidad que conduce a datos más pequeños. archivos. [12] Alternativamente, CSV no admite relaciones de datos más complejas y no hace distinción entre valores nulos y vacíos, y en aplicaciones donde se necesitan estas características se prefieren otros formatos.

Especificación

RFC  4180 propone una especificación para el formato CSV; sin embargo, la práctica real a menudo no sigue el RFC y el término "CSV" puede referirse a cualquier archivo que: [1] [13]

  1. es texto sin formato que utiliza una codificación de caracteres como ASCII , varias codificaciones de caracteres Unicode (por ejemplo , UTF-8 ), EBCDIC o Shift JIS .
  2. consta de registros (normalmente un registro por línea),
  3. con los registros divididos en campos separados por delimitadores (normalmente un único carácter reservado como coma, punto y coma o tabulación; a veces el delimitador puede incluir espacios opcionales),
  4. donde cada registro tiene la misma secuencia de campos.

Dentro de estas limitaciones generales, se utilizan muchas variaciones. Por lo tanto, sin información adicional (como si se respeta el RFC 4180), un archivo que se dice que simplemente está en formato "CSV" no se especifica completamente. Como resultado, algunas aplicaciones que admiten archivos CSV tienen asistentes de importación de texto que permiten a los usuarios obtener una vista previa de las primeras líneas del archivo y luego especificar los caracteres delimitadores, las reglas de citación y el recorte de campos.

Historia

Los valores separados por comas son un formato de datos anterior a las computadoras personales en más de una década: el compilador IBM Fortran (nivel H extendido) bajo OS/360 admitía CSV en 1972. [14] Entrada dirigida por lista ("forma libre")/ la salida se definió en FORTRAN 77 , aprobado en 1978. La entrada dirigida por lista usaba comas o espacios para los delimitadores, por lo que las cadenas de caracteres sin comillas no podían contener comas ni espacios. [15]

El término "valor separado por comas" y la abreviatura "CSV" se utilizaban en 1983. [16] El manual de la computadora Osborne Executive, que incluía la hoja de cálculo SuperCalc , documenta la convención de citas CSV que permite que las cadenas contengan comas incrustadas. pero el manual no especifica una convención para insertar comillas dentro de cadenas entre comillas. [17]

Las listas de valores separados por comas son más fáciles de escribir (por ejemplo, en tarjetas perforadas ) que los datos alineados con columnas fijas, y eran menos propensos a producir resultados incorrectos si un valor se perforaba a una columna 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 de dos arquitecturas diferentes. El carácter de texto sin formato 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 por humanos, por lo que es más fácil manejarlos en ausencia de una documentación o comunicación perfecta. [18]

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 definía CSV como un tipo de contenido MIME . [19] Más tarde, en 2013, algunas de las deficiencias del RFC 4180 fueron abordadas por una recomendación del W3C. [20]

En 2014, el IETF publicó el RFC 7111 que describe la aplicación de fragmentos de URI a documentos CSV. RFC 7111 especifica cómo se pueden seleccionar rangos de filas, columnas y celdas de un documento CSV utilizando índices de posición. [21]

En 2015, el W3C , en un intento de mejorar el CSV con semántica formal , publicó los primeros borradores de recomendaciones para los estándares de metadatos CSV, que comenzaron como recomendaciones en diciembre del mismo año. [22]

Funcionalidad general

Los formatos CSV se utilizan mejor para representar conjuntos o secuencias de registros en los que cada registro tiene una lista idéntica de campos. Esto corresponde a una única relación en una base de datos relacional , o a datos (aunque no cálculos) en una hoja de cálculo típica.

El formato se remonta a los primeros días de la informática empresarial y se utiliza ampliamente para pasar datos entre computadoras con diferentes tamaños de palabras internas, necesidades de formato de datos, etc. Por este motivo, los archivos CSV son comunes en todas las plataformas informáticas.

CSV es un archivo de texto delimitado que utiliza una coma para separar valores (muchas implementaciones de herramientas de importación/exportación CSV permiten el uso de otros separadores; por ejemplo, el uso de una fila "Sep=^" como primera fila en el archivo *. csv hará que Excel abra el archivo esperando que el signo de intercalación "^" sea el separador en lugar de la coma ","). Las implementaciones CSV simples pueden prohibir valores de campo que contengan una coma u otros caracteres especiales, como nuevas líneas. Las implementaciones CSV más sofisticadas lo permiten, a menudo exigiendo caracteres " ( comillas dobles ) alrededor de valores que contienen caracteres reservados (como comas, comillas dobles o, menos comúnmente, nuevas líneas). Los caracteres entre comillas dobles incrustados pueden luego representarse mediante un par de caracteres consecutivos. comillas dobles, [23] o anteponiendo una comilla doble con un carácter de escape como una barra invertida (por ejemplo en Sybase Central).

Los formatos CSV no se limitan a un conjunto de caracteres en particular . [1] Funcionan igual de bien con conjuntos de caracteres Unicode (como UTF-8 o UTF-16 ) como con ASCII (aunque determinados programas que admiten CSV pueden tener sus propias limitaciones). Los archivos CSV normalmente incluso sobrevivirán a una traducción sencilla de un conjunto de caracteres a otro (a diferencia de casi todos los formatos de datos propietarios). Sin embargo, CSV no proporciona ninguna forma de indicar qué juego de caracteres está en uso, por lo que debe comunicarse por separado o determinarse en el extremo receptor (si es posible).

Las bases de datos que incluyen múltiples relaciones no se pueden exportar como un único archivo CSV [ cita requerida ] . De manera similar, CSV no puede representar de forma natural datos jerárquicos u orientados a objetos . Esto se debe a que se espera que cada registro CSV tenga la misma estructura. Por lo tanto, CSV rara vez es apropiado para documentos creados con HTML , XML u otras tecnologías de marcado o procesamiento de textos.

Las bases de datos estadísticas en diversos campos suelen tener una estructura generalmente similar a una relación, pero con algunos grupos de campos repetibles. Por ejemplo, las bases de datos de salud como la Encuesta Demográfica y de Salud suelen repetir algunas preguntas para cada hijo de un determinado padre (quizás hasta un número máximo fijo de hijos). Los sistemas de análisis estadístico suelen incluir utilidades que pueden "rotar" dichos datos; por ejemplo, un registro "padre" que incluye información sobre cinco niños se puede dividir en cinco registros separados, cada uno de los cuales contiene (a) la información de un niño y (b) una copia de toda la información no específica del niño. CSV puede representar la forma "vertical" u "horizontal" de dichos datos.

En una base de datos relacional, problemas similares se manejan fácilmente creando una relación separada para cada grupo y conectando registros "secundarios" a los registros "principales" relacionados usando una clave externa (como un número de identificación o nombre del padre). En lenguajes de marcado como XML, estos grupos normalmente se incluyen dentro de un elemento principal y se repiten según sea necesario (por ejemplo, varios <child>nodos dentro de un solo <parent>nodo). Con CSV no existe una solución de archivo único ampliamente aceptada.

Estandarización

El nombre "CSV" indica el uso de la coma para separar campos de datos. Sin embargo, el término "CSV" se utiliza ampliamente para referirse a una gran familia de formatos que se diferencian en muchos aspectos. Algunas implementaciones permiten o requieren comillas simples o dobles alrededor de algunos o todos los campos; y algunos reservan el primer registro como encabezado que contiene una lista de nombres de campos. El juego de caracteres que se utiliza no está definido: algunas aplicaciones requieren una marca de orden de bytes (BOM) Unicode para aplicar la interpretación Unicode (a veces incluso una BOM UTF-8). [1] Los archivos que utilizan el carácter de tabulación en lugar de coma pueden denominarse más precisamente "TSV" para valores separados por tabulaciones.

Otras diferencias de implementación incluyen el manejo de separadores de campos más comunes (como espacios o punto y coma) y caracteres de nueva línea dentro de los campos de texto. Una sutileza más es la interpretación de una línea en blanco: puede ser igualmente el resultado de escribir un registro de cero campos, o un registro de un campo de longitud cero; por lo tanto, decodificarlo es ambiguo.

Estándares RFC 4180 y MIME

El estándar técnico RFC 4180 de 2005 formaliza el formato de archivo CSV y define el tipo MIME "text/csv" para el manejo de campos basados ​​en texto. Sin embargo, la interpretación del texto de cada campo sigue siendo específica de la aplicación. Los archivos que siguen el estándar RFC 4180 pueden simplificar el intercambio CSV y deberían ser ampliamente portátiles. Entre sus requisitos:

El formato puede ser procesado por la mayoría de los programas que afirman leer archivos CSV. Las excepciones son (a) los programas pueden no admitir saltos de línea dentro de los campos entre comillas, (b) los programas pueden confundir el encabezado opcional con datos o interpretar la primera línea de datos como un encabezado opcional, y (c) las comillas dobles en un campo pueden no se analizará correctamente de forma automática.

Paquete de datos tabulares sin fricción OKF

En 2011, Open Knowledge Foundation (OKF) y varios socios crearon un grupo de trabajo de protocolos de datos, que luego evolucionó hasta convertirse en la iniciativa Frictionless Data. Uno de los principales formatos que lanzaron fue el paquete de datos tabulares. El paquete Tabular Data se basó en gran medida en CSV, usándolo como formato de transporte de datos principal y agregando metadatos de esquema y tipos básicos (CSV carece de información de tipo para distinguir la cadena "1" del número 1). [24]

Frictionless Data Initiative también ha proporcionado un formato de descripción de dialecto CSV estándar para describir diferentes dialectos de CSV, por ejemplo, especificando el separador de campos o las reglas de citación. [25]

Estándar de datos tabulares W3C

En 2013, el grupo de trabajo "CSV en la Web" del W3C comenzó a especificar tecnologías que proporcionaran una mayor interoperabilidad para aplicaciones web que utilizan CSV o formatos similares. [26] El grupo de trabajo completó su trabajo 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 [27] para modelar "datos tabulares", [28] y mejorar CSV con metadatos y semántica. .

Reglas básicas

Existen muchos documentos informales que describen formatos "CSV". IETF RFC 4180 (resumido anteriormente) define el formato para el tipo MIME "text/csv" registrado en la IANA .

Las reglas típicas de estas y otras especificaciones e implementaciones "CSV" son las siguientes:

Ejemplo

La tabla de datos anterior se puede representar en formato CSV de la siguiente manera:

Año, Marca, Modelo, Descripción, Precio1997, Ford, E350, "ac, abs, luna", 3000,001999,Chevy,"Venture ""Edición ampliada""","",4900,001999,Chevy,"Venture ""Edición ampliada, muy grande""","",5000,001996, Jeep, Grand Cherokee, "¡DEBE VENDER!aire, techo corredizo, cargado",4799.00

Ejemplo de un archivo CSV de EE. UU./Reino Unido (donde el separador decimal es un punto/punto y el separador de valores es una coma):

Año, Marca, Modelo, Longitud1997,Ford,E350,2.352000, Mercurio, Puma, 2,38

Ejemplo de un archivo CSV/ DSV europeo análogo (donde el separador decimal es una coma y el separador de valores es un punto y coma):

Año;Marca;Modelo;Longitud1997;Ford;E350;2,352000;Mercurio;Puma;2,38

Este último formato no cumple con RFC 4180. [29] El cumplimiento podría lograrse mediante el uso de una coma en lugar de un punto y coma como separador y la notación internacional para la representación de la marca decimal o la práctica de citar todos los números que tienen una marca decimal.

Soporte de aplicaciones

Algunas aplicaciones utilizan CSV como formato de intercambio de datos para mejorar su interoperabilidad , exportando e importando CSV. Otros utilizan CSV como formato interno .

Como formato de intercambio de datos: el formato de archivo CSV es compatible con casi todas las hojas de cálculo y sistemas de gestión de bases de datos.

Como representación interna (principal u opcional). Puede ser nativo o extranjero , pero se diferencia del formato de intercambio ("sólo exportar/importar") porque no es necesario crear una copia en otro formato:

El formato CSV es compatible con bibliotecas disponibles para muchos lenguajes de programación . La mayoría proporciona alguna forma de especificar el delimitador de campo, el separador decimal , la codificación de caracteres, las convenciones de citas, el formato de fecha, etc.

Límites de filas y software

Los programas que funcionan con CSV pueden tener límites en el número máximo de filas que pueden tener los archivos CSV. A continuación se muestra una lista de software común y sus limitaciones: [34]

Ver también

Referencias

  1. ^ abcde Shafranovich, Y. (octubre de 2005). Formato común y tipo MIME para archivos CSV. IETF . pag. 1.doi : 10.17487 /RFC4180 . RFC 4180.
  2. ^ ab "texto separado por coma". Documentación para desarrolladores de Apple: identificadores de tipo uniforme . Apple Inc .
  3. ^ "Formato de archivo de valores separados por comas CSV - Procedimiento - Creativyst - Explorado, diseñado y entregado. (sm)". Software creativo . Archivado desde el original el 1 de abril de 2021 . Consultado el 22 de agosto de 2023 .
  4. ^ Guía de administración de IBM DB2. IBM.
  5. ^ "Cuáles son los formatos disponibles". Eurostat . Archivado desde el original el 26 de julio de 2023 . Consultado el 22 de agosto de 2023 .
  6. ^ "Importar o exportar archivos de texto (.txt o .csv)". Soporte de Microsoft . Consultado el 16 de agosto de 2023 .
  7. ^ "¿Cuáles son las ventajas y desventajas de los archivos CSV?". www.quora.com . Consultado el 30 de octubre de 2023 .
  8. ^ "CSV: valores separados por comas" . Consultado el 2 de diciembre de 2017 .
  9. ^ "Archivos CSV" . Consultado el 4 de junio de 2014 .
  10. ^ "pandas.DataFrame.to_csv - documentación de pandas 2.0.3". pandas.pydata.org . Consultado el 16 de agosto de 2023 .
  11. ^ "Formato CSV: historia, ventajas y por qué sigue siendo popular". ByteScout . 2021-09-15 . Consultado el 16 de agosto de 2023 .
  12. ^ "Comparación de diferentes formatos de archivos en Big Data". www.adaltas.com . 2020-07-23 . Consultado el 16 de agosto de 2023 .
  13. ^ "Formato de archivo estándar de valores separados por comas (CSV)". Edoceo, Inc. Consultado el 4 de junio de 2014 .
  14. ^ Productos del programa IBM FORTRAN para sistema operativo y el componente CMS de VM/370 Información general (PDF) (primera ed.), julio de 1972, p. 17, GC28-6884-0 , consultado el 5 de febrero de 2016 , Para los usuarios familiarizados con los procesadores predecesores FORTRAN IV G y H, estas son las principales capacidades nuevas del lenguaje.
  15. ^ "E/S dirigida por lista", Referencia del lenguaje Fortran 77 , Oracle
  16. ^ "SuperCalc², paquete de hojas de cálculo para IBM, CP/M" . Consultado el 11 de diciembre de 2017 .
  17. ^ "Estructura de archivos en formato de valores separados por comas". 1983 . Consultado el 11 de diciembre de 2017 .
  18. ^ "CSV, valores separados por comas (RFC 4180)" . Consultado el 4 de junio de 2014 .
  19. ^ RFC 4180: formato común y tipo MIME para archivos de valores separados por comas (CSV). doi : 10.17487/RFC4180 . RFC 4180 . Consultado el 22 de diciembre de 2020 .
  20. ^ Consulte sparql11-results-csv-tsv, la primera recomendación del W3C con alcance en CSV y que cubre algunas de las deficiencias de RFC 4180.
  21. ^ RFC 7111: Identificadores de fragmentos de URI para el tipo de medio texto/csv. doi : 10.17487/RFC7111 . RFC 7111 . Consultado el 22 de diciembre de 2020 .
  22. ^ "Modelo para datos tabulares y metadatos en la Web: recomendación del W3C del 17 de diciembre de 2015" . Consultado el 23 de marzo de 2016 .
  23. ^ * Creativyst (2010), Cómo: formato de archivo de valores separados por comas (CSV), creativyst.com , consultado el 24 de mayo de 2010
  24. ^ "Paquete de datos tabulares". Especificaciones de datos sin fricciones .
  25. ^ "Dialecto CSV". Especificaciones de datos sin fricciones .
  26. ^ "Grupo de trabajo CSV en la Web". Grupo de Trabajo sobre CSV del W3C . 2013 . Consultado el 22 de abril de 2015 .
  27. ^ CSV en el repositorio web (en GitHub)
  28. ^ Modelo para datos tabulares y metadatos en la Web (recomendación del W3C)
  29. ^ Shafranovich (2005) afirma: "Dentro del encabezado y de cada registro, puede haber uno o más campos, separados por comas".
  30. ^ "Documentación: 14: COPIA". PostgreSQL. 2022-02-10 . Consultado el 4 de marzo de 2022 .
  31. ^ "Documentación: 14: F.35. postgres_fdw". PostgreSQL. 2022-02-10 . Consultado el 4 de marzo de 2022 .
  32. ^ "Documentación: 14: F.14. file_fdw". PostgreSQL. 2022-02-10 . Consultado el 4 de marzo de 2022 .
  33. ^ "EmacsWiki: navegación Csv". www.emacswiki.org .
  34. ^ "Comprensión de CSV y límites de filas" . Consultado el 28 de febrero de 2021 .

Otras lecturas