Значения, разделенные запятыми

редактировать
Формат файла, используемый для хранения данных
Значения, разделенные запятыми
CsvDelimited001.svg
Расширение имени файла .csv
Тип Интернет-носителя text / csv
Первоначальный выпускНеизвестно. Информационный RFC, октябрь 2005 г.
Тип форматамногоплатформенные, последовательные потоки данных
Контейнер для базы данных информация, организованная в виде списков, разделенных полями
Стандартный RFC 4180

A значения, разделенные запятыми (CSV ) файл - это текстовый файл с разделителями , в котором для разделения значений используется запятая . Каждая строка файла представляет собой запись данных . Каждая запись состоит из одного или нескольких полей , разделенных запятыми. Использование запятой в качестве разделителя полей является источником имени для этого формата файла. Файл CSV обычно хранит табличные данные (числа и текст) в обычном тексте, и в этом случае каждая строка будет иметь одинаковое количество полей.

Формат файла CSV не полностью стандартизирован. Основная идея разделения полей запятой ясна, но эта идея усложняется, когда данные поля могут также содержать запятые или даже встроенные разрывы строк. Реализации CSV могут не обрабатывать такие данные поля или они могут использовать кавычки, чтобы заключить поле. Цитирование не решает всего: в некоторые поля могут потребоваться встроенные кавычки, поэтому реализация CSV может включать escape-символы или escape-последовательности.

Кроме того, термин «CSV» также обозначает некоторые тесно связанные форматы с разделителями-разделителями, в которых используются разные разделители полей, например точки с запятой. К ним относятся значения, разделенные табуляцией, и значения, разделенные пробелами. Разделитель, которого нет в данных поля (например, табуляция), упрощает синтаксический анализ формата. Этим альтернативным файлам с разделителями-разделителями часто даже присваивается расширение.csv , несмотря на использование разделителя полей, отличного от запятой. Эта нечеткая терминология может вызвать проблемы в обмене данными. Многие приложения, которые принимают файлы CSV, имеют параметры для выбора символа разделителя и символа кавычки. Во многих европейских региональных стандартах точки с запятой часто используются вместо запятых, чтобы использовать запятую в качестве десятичного разделителя и, возможно, точку в качестве десятичного символа группировки. По этой причине термин значения, разделенные символами, предлагается как более широкое определение этого формата файла.

Содержание
  • 1 Обмен данными
  • 2 Спецификация
  • 3 История
  • 4 Общие функциональные возможности
  • 5 Стандартизация
    • 5.1 Пакет табличных данных без трения OKI
    • 5.2 Стандарт табличных данных Internet W3C
    • 5.3 Стандарт RFC 4180
  • 6 Основные правила
  • 7 Пример
  • 8 Поддержка приложений
  • 9 См. Также
  • 10 Ссылки
  • 11 Дополнительная литература
Обмен данными

CSV - это распространенный формат обмена данными, который широко поддерживается потребителями, бизнесом, и научные приложения. Среди его наиболее распространенных применений - перемещение табличных данных между программами, которые изначально работают с несовместимыми (часто проприетарными или недокументированными) форматами. Это работает, несмотря на несоблюдение RFC 4180 (или любого другого стандарта), потому что многие программы поддерживают варианты формата CSV для импорта данных.

Например, пользователю может потребоваться передать информацию из программы базы данных, которая хранит данные в частном формате, в электронную таблицу, которая использует совершенно другой формат. Программа базы данных, скорее всего, может экспортировать свои данные в формате CSV; затем экспортированный файл CSV может быть импортирован программой электронных таблиц.

Спецификация

RFC 4180 предлагает спецификацию для формата CSV; однако на практике часто не следует RFC, и термин «CSV» может относиться к любому файлу, который:

  1. представляет собой обычный текст с использованием набора символов, такого как ASCII, различных Наборы символов Unicode (например, UTF-8 ), EBCDIC или Shift JIS,
  2. состоит из записей (обычно одна запись в строке),
  3. с записями, разделенными на поля, разделенные разделителями (обычно один зарезервированный символ, такой как запятая, точка с запятой или табуляция; иногда разделитель может включать необязательные пробелы),
  4. , где каждая запись имеет одинаковую последовательность полей.

В рамках этих общих ограничений используется множество вариаций. Следовательно, без дополнительной информации (например, соблюдается ли RFC 4180 ) файл, заявленный просто как находящийся в формате «CSV», не указывается полностью. В результате многие приложения, поддерживающие файлы CSV, позволяют пользователям предварительно просмотреть несколько первых строк файла, а затем указать символ (символы) разделителя, правила цитирования и т. Д. Если варианты конкретного файла CSV выходят за рамки того, что поддерживает конкретная принимающая программа, часто возможно проверить и отредактировать файл вручную (т. е. с помощью a) или написать сценарий или программу для создания соответствующего формата.

История

Значения, разделенные запятыми, представляют собой формат данных, предшествующий персональным компьютерам более чем на десять лет: IBM Fortran (уровень H расширенный) компилятор в OS / 360 поддерживал их в 1972 году. Управляемый списком («свободная форма») ввод / вывод был определен в FORTRAN 77, утвержденном в 1978 году. входные данные использовали запятые или пробелы в качестве разделителей, поэтому строки символов без кавычек не могли содержать запятых или пробелов.

Имя «значения, разделенные запятыми» и сокращение «CSV» использовались до 1983 года. Руководство для Osborne Исполнительный компьютер, в который входит электронная таблица SuperCalc, документирует соглашение о цитировании CSV, которое позволяет строкам содержать встроенные запятые, но в руководстве не указано соглашение о встраивании кавычек в кавычки.

Списки значений, разделенных запятыми, легче вводить (например, в перфокарты ), чем данные с фиксированным выравниванием по столбцам, и они менее подвержены ошибочным результатам если значение было удалено на один столбец от предполагаемого местоположения.

Файлы, разделенные запятыми, используются для обмена информацией базы данных между машинами двух разных архитектур. Обычный текстовый символ файлов CSV в значительной степени позволяет избежать несовместимости, такой как байтовый порядок и размер слова. Файлы в значительной степени удобочитаемы, поэтому с ними легче работать при отсутствии идеальной документации или связи.

Основная инициатива по стандартизации - преобразование «де-факто нечеткое определение» в более точный и де-юре - был в 2005 году с RFC4180, определяющим CSV как тип содержимого MIME. Позже, в 2013 году, некоторые недостатки RFC4180 были устранены с помощью рекомендации W3C.

В 2014 году IETF опубликовал RFC7111, описывающий применение фрагментов URI к документам CSV. RFC7111 определяет, как диапазоны строк, столбцов и ячеек могут быть выбраны из документа CSV с использованием индексов положения.

В 2015 году W3C, пытаясь улучшить CSV с помощью формальной семантики, опубликовал первые проекты рекомендаций для стандартов CSV-метаданных, которые начинались как рекомендации в декабре. того же года.

Общая функциональность

Форматы CSV лучше всего использовать для представления наборов или последовательностей записей, в которых каждая запись имеет идентичный список полей. Это соответствует единственному отношению в реляционной базе данных или данным (но не вычислениям) в типичной электронной таблице.

Формат восходит к ранним дням развития бизнес-вычислений и широко используется для передачи данных между компьютерами с разными внутренними размерами слов, требованиями к форматированию данных и т. Д. По этой причине файлы CSV распространены на всех компьютерных платформах.

CSV - это текстовый файл с разделителями , в котором для разделения значений используется запятая (многие реализации инструментов импорта / экспорта CSV позволяют использовать другие разделители; например, использование строки «Sep = ^» в качестве первой строки в файле *.csv приведет к тому, что Excel откроет файл, ожидая, что каретка «^» будет разделителем вместо запятая ","). Простые реализации CSV могут запрещать значения полей, содержащие запятую или другие специальные символы, такие как новой строки. Более сложные реализации CSV допускают их, часто требуя символов "(двойные кавычки ) вокруг значений, содержащих зарезервированные символы (например, запятые, двойные кавычки или, реже, новой строки ). символы двойных кавычек могут затем быть представлены парой последовательных двойных кавычек или префиксом двойной кавычки с помощью escape-символа , такого как обратная косая черта (например, в Sybase Central).

Форматы CSV не ограничиваются определенным набором символов . Они также хорошо работают с наборами символов Unicode (например, UTF -8 или UTF-16 ), как и в случае с ASCII (хотя определенные программы, поддерживающие CSV, могут иметь свои ограничения). Файлы CSV обычно выдерживают даже простой перевод одного символа установлено другое значение (в отличие от почти всех проприетарных форматов данных). CSV, однако, не предоставляет никакого способа указать, какой набор символов используется, поэтому его необходимо сообщать отдельно, или определяется на принимающей стороне (если возможно).

Базы данных, содержащие несколько отношений, нельзя экспортировать как один файл CSV. Точно так же CSV не может естественным образом представлять иерархические или объектно-ориентированные данные. Это связано с тем, что каждая запись CSV должна иметь одинаковую структуру. Поэтому CSV редко подходит для документов, созданных с помощью HTML, XML или других технологий разметки или обработки текста.

Статистические базы данных в различных областях часто имеют структуру, подобную отношениям, но с некоторыми повторяющимися группами полей. Например, медицинские базы данных, такие как Демографическое и медицинское обследование, обычно повторяют некоторые вопросы для каждого ребенка данного родителя (возможно, до фиксированного максимального количества детей). Статистический анализ системы часто включают в себя утилиты, которые могут «вращать» такие данные; например, «родительская» запись, включающая информацию о пяти дочерних элементах, может быть разделена на пять отдельных записей, каждая из которых содержит (а) информацию об одном дочернем элементе и (б) копию всей информации, не относящейся к дочернему. CSV может представлять "вертикальную" или "горизонтальную" форму таких данных.

В реляционной базе данных подобные проблемы легко решаются путем создания отдельного отношения для каждой такой группы и соединения «дочерних» записей с соответствующими «родительскими» записями с помощью внешнего ключа ( например, идентификационный номер или имя родителя). В языках разметки, таких как XML, такие группы обычно заключаются в родительский элемент и повторяются при необходимости (например, несколько узлов в одном узле ). Для CSV нет широко распространенного однофайлового решения.

Стандартизация

Имя «CSV» указывает на использование запятой для разделения полей данных. Тем не менее, термин «CSV» широко используется для обозначения большого семейства форматов, которые во многом различаются. Некоторые реализации позволяют или требуют одинарные или двойные кавычки вокруг некоторых или всех полей; а некоторые резервируют первую запись как заголовок, содержащий список имен полей. Используемый набор символов не определен: некоторым приложениям требуется знак порядка байтов Unicode (BOM) для обеспечения интерпретации Unicode (иногда даже UTF-8 BOM). Файлы, в которых вместо запятой используется символ табуляции, можно более точно называть "TSV" для значений, разделенных табуляцией..

Другие различия в реализации включают обработку более распространенных разделителей полей (таких как пробел или точка с запятой) и символов новой строки внутри текстовых полей. Еще одна тонкость - это интерпретация пустой строки: она может в равной степени быть результатом записи записи из нулевых полей или записи одного поля нулевой длины; при этом расшифровка неоднозначна.

Пакет табличных данных без трения OKI

В 2011 году Open Knowledge International (OKI) и различные партнеры создали рабочую группу по протоколам данных, которая позже превратилась в инициативу Frictionless Data. Одним из основных форматов, которые они выпустили, был пакет табличных данных. Пакет табличных данных в значительной степени основан на CSV, используя его в качестве основного формата передачи данных и добавляя метаданные базового типа и схемы (в CSV отсутствует какая-либо информация о типе, чтобы отличить строку «1» от числа 1).

Frictionless Data Initiative также предоставила стандартный формат описания диалектов CSV для описания различных диалектов CSV, например, указав разделитель полей или правила цитирования.

Стандарт табличных данных Интернета W3C

В 2013 году W3C Рабочая группа «CSV в Интернете» начала определять технологии, обеспечивающие более высокую совместимость веб-приложений, использующих CSV или аналогичные форматы. Рабочая группа завершила свою работу в феврале 2016 года и официально закрыта в марте 2016 года с выпуском набора документов и рекомендаций W3C для моделирования «табличных данных» и улучшения CSV с помощью метаданных и семантики..

Стандарт RFC 4180

Технический стандарт 2005 года RFC 4180 формализует формат файла CSV и определяет тип MIME «текст / csv» для обработки текстовых файлов. на основе полей. Однако интерпретация текста каждого поля по-прежнему зависит от приложения. Файлы, соответствующие стандарту RFC 4180, могут упростить обмен CSV и должны быть широко переносимыми. Среди его требований:

  • строки в стиле MS-DOS, которые заканчиваются символами (CR / LF) (необязательно для последней строки).
  • Необязательная запись заголовка (нет надежного способа определить, присутствует, поэтому при импорте требуется осторожность).
  • Каждая запись должна содержать одинаковое количество полей, разделенных запятыми.
  • Любое поле может быть заключено в кавычки (в двойных кавычках).
  • Поля, содержащие разрыв строки, двойные кавычки или запятые, должны быть заключены в кавычки. (В противном случае файл, вероятно, будет невозможно правильно обработать.)
  • Если для заключения полей используются двойные кавычки, то двойные кавычки должны быть представлены двумя символами двойных кавычек.

Формат может обрабатываться большинством программ, которые утверждают, что читают файлы CSV. Исключениями являются: (а) программы могут не поддерживать разрывы строк в цитируемых полях, (б) программы могут путать необязательный заголовок с данными или интерпретировать первую строку данных как необязательный заголовок и (в) двойные кавычки в поле могут не быть разбирается правильно автоматически.

Основные правила

Существует множество неофициальных документов, описывающих форматы "CSV". IETF RFC 4180 (кратко изложено выше) определяет формат для «text / csv» типа MIME, зарегистрированного с помощью правил IANA.

, типичных для эти и другие спецификации и реализации "CSV" следующие:

  • CSV - это формат данных с разделителями , который имеет поля / столбцы, разделенные запятой символ и записей / строк, оканчивающихся новой строкой.
  • Файл CSV не требует определенной кодировки символов , порядок байтов, или формат конца строки (некоторые программы не поддерживают все варианты конца строки).
  • Запись заканчивается символом конца строки. Тем не менее, терминаторы строки могут быть встроены как данные в поля, поэтому программное обеспечение должно распознавать цитируемые разделители строк (см. Ниже), чтобы правильно собрать всю запись, возможно, из нескольких строк.
  • Все записи должны иметь одинаковые количество полей в том же порядке.
  • Данные внутри полей интерпретируются как последовательность символов, а не как последовательность битов или байтов (см. RFC 2046, раздел 4.1). Например, числовое количество 65535 может быть представлено как 5 символов ASCII «65535» (или, возможно, в других формах, таких как «0xFFFF», «000065535.000E + 00» и т. Д.); но не как последовательность из 2 байтов, предназначенную для обработки как одно двоичное целое число, а не как два символа (например, числа 11264–11519 имеют запятую в качестве старшего байта: ord (',') * 256..ord (',') * 256 + 255). Если это соглашение о «простом тексте» не соблюдается, то CSV-файл больше не содержит достаточной информации для его правильной интерпретации, CSV-файл, скорее всего, не переживет передачу через разные компьютерные архитектуры и не будет соответствовать типу MIME text / csv.
  • Смежные поля должны быть разделены одной запятой. Однако форматы «CSV» сильно различаются по выбору символа-разделителя. В частности, в языковых стандартах , где запятая используется в качестве десятичного разделителя , вместо нее используются точка с запятой, TAB или другие символы.
    1997, Ford, E350
  • Любое поле может быть заключено в кавычки (то есть заключено в двойные кавычки). Некоторые поля должны быть заключены в кавычки, как указано в следующих правилах.
    «1997», «Ford», «E350»
  • Поля со встроенными запятыми или двойными кавычками должны быть заключены в кавычки.
    1997, Ford, E350, «Супер роскошный грузовик»
  • Каждый из встроенных символов двойных кавычек должен быть представлен парой символов двойных кавычек.
    1997, Ford, E350, "Super", "luxury" "truck"
  • Поля со встроенными разрывами строк должны быть заключены в кавычки (однако многие реализации CSV не поддерживают встроенные разрывы строк).
    1997, Ford, E350, «Давай, теперь они идут быстро»
  • В некоторых реализациях CSV начальные и конечные пробелы и табуляция обрезаются (игнорируются). Такая обрезка запрещена в RFC 4180, который гласит: «Пробелы считаются частью поля и не должны игнорироваться».
    1997, Ford, E350 не то же самое, что 1997, Ford, E350
  • Согласно RFC 4180, пробелы вне кавычек в поле не допускаются; однако в RFC также говорится, что «Пробелы считаются частью поля и не должны игнорироваться». и «Разработчики должны быть консервативными в том, что вы делаете, и либеральными в том, что вы принимаете от других» (RFC 793, раздел 2.10) при обработке файлов CSV ».
    1997, "Ford", E350
  • В реализациях CSV, которые обрезают начальные или конечные пробелы, поля с такими пробелами как значимые данные должны быть заключены в кавычки.
    1997, Ford, E350, «Супер роскошный грузовик»
  • Обработка двойных кавычек применяется только в том случае, если поле начинается с двойной кавычки. Обратите внимание, однако, что двойные кавычки не допускаются в полях без кавычек в соответствии с RFC 4180.
    Лос-Анджелес, 34 ° 03 'северной широты, 118 ° 15' западной долготы, Нью-Йорк, 40 ° 42'46 ″ северной широты, 74 ° 00′21 ″ з.д. 03 ″ E
  • Первая запись может быть «заголовком», который содержит имена столбцов в каждом из полей (нет надежного способа узнать, делает ли файл это или нет; однако редко используются другие символы. чем буквы, цифры и символы подчеркивания в таких именах столбцов).
    Год, Марка, Модель 1997, Ford, E350 2000, Mercury, Cougar
Пример
ГодСделатьМодельОписаниеЦена
1997FordE350ac, abs, moon3000.00
1999ChevyVenture "Extended Edition"4900.00
1999ChevyVenture "Extended Edition, Very Large"5000.00
1996JeepGrand CherokeeДОЛЖЕН ПРОДАВАТЬСЯ!. воздух, крыша луны, груженый4799.00

Может быть представлена ​​приведенная выше таблица данных в формате CSV следующим образом:

Год, Марка, Модель, Описание, Цена 1997, Ford, E350, "ac, abs, moon", 3000.00 1999, Chevy, "Venture", "Extended Edition" "", "", 4900.00 1999, Chevy, "Venture" "Extended Edition, Very Large" "",, 5000.00 1996, Jeep, Grand Cherokee, "ДОЛЖЕН ПРОДАВАТЬ! Воздух, крыша луны, груженый", 4799.00

Пример файла CSV для США / Великобритании (где десятичный разделитель - точка / точка, а разделитель значений - запятая):

Год, Марка, Модель, Длина 1 997, Ford, E350,2.35 2000, Mercury, Cougar, 2.38

Пример аналогичного европейского файла CSV / DSV (где десятичный разделитель - запятая и разделитель значений - точка с запятой):

Год; Марка; Модель; Длина 1997; Ford; E350; 2,35 2000; Mercury; Cougar; 2,38

Последний формат не Соответствует RFC 4180. Соответствие может быть достигнуто путем использования запятой вместо точки с запятой в качестве разделителя и либо международной нотации для представления десятичного знака, либо практики цитирования всех чисел, которые имеют десятичный знак.

Поддержка приложений

Формат файла CSV поддерживается почти всеми электронными таблицами и системами управления базами данных, включая Apple Numbers, LibreOffice Calc и Apache OpenOffice Calc. Microsoft Excel также поддерживает CSV, но с ограничениями по сравнению с другим программным обеспечением для работы с электронными таблицами (например, с 2019 года Excel по-прежнему не может экспортировать файлы CSV в обычно используемой кодировке символов UTF-8 ).

Формат CSV поддерживается библиотеками, доступными для многих языков программирования. Большинство из них предоставляют способ указать разделитель полей, десятичный разделитель, кодировку символов, условия цитирования, формат даты и т. Д.

Редактор emacs может работать с CSV-файлами с использованием режима csv-nav.

Многие служебные программы в системах в стиле Unix (например, вырезать, вставить, объединить, sort, uniq, awk ) могут разбивать файлы по разделителю запятой и, следовательно, обрабатывать простые файлы CSV. Однако этот метод неправильно обрабатывает запятые в строках в кавычках.

См. Также
Ссылки
Дополнительная литература
Последняя правка сделана 2021-05-15 06:43:21
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте