Расширение имени файла | .csv |
---|---|
Тип Интернет-носителя | text / csv |
Первоначальный выпуск | Неизвестно. Информационный RFC, октябрь 2005 г. |
Тип формата | многоплатформенные, последовательные потоки данных |
Контейнер для | базы данных информация, организованная в виде списков, разделенных полями |
Стандартный | RFC 4180 |
A значения, разделенные запятыми (CSV ) файл - это текстовый файл с разделителями , в котором для разделения значений используется запятая . Каждая строка файла представляет собой запись данных . Каждая запись состоит из одного или нескольких полей , разделенных запятыми. Использование запятой в качестве разделителя полей является источником имени для этого формата файла. Файл CSV обычно хранит табличные данные (числа и текст) в обычном тексте, и в этом случае каждая строка будет иметь одинаковое количество полей.
Формат файла CSV не полностью стандартизирован. Основная идея разделения полей запятой ясна, но эта идея усложняется, когда данные поля могут также содержать запятые или даже встроенные разрывы строк. Реализации CSV могут не обрабатывать такие данные поля или они могут использовать кавычки, чтобы заключить поле. Цитирование не решает всего: в некоторые поля могут потребоваться встроенные кавычки, поэтому реализация CSV может включать escape-символы или escape-последовательности.
Кроме того, термин «CSV» также обозначает некоторые тесно связанные форматы с разделителями-разделителями, в которых используются разные разделители полей, например точки с запятой. К ним относятся значения, разделенные табуляцией, и значения, разделенные пробелами. Разделитель, которого нет в данных поля (например, табуляция), упрощает синтаксический анализ формата. Этим альтернативным файлам с разделителями-разделителями часто даже присваивается расширение.csv , несмотря на использование разделителя полей, отличного от запятой. Эта нечеткая терминология может вызвать проблемы в обмене данными. Многие приложения, которые принимают файлы CSV, имеют параметры для выбора символа разделителя и символа кавычки. Во многих европейских региональных стандартах точки с запятой часто используются вместо запятых, чтобы использовать запятую в качестве десятичного разделителя и, возможно, точку в качестве десятичного символа группировки. По этой причине термин значения, разделенные символами, предлагается как более широкое определение этого формата файла.
CSV - это распространенный формат обмена данными, который широко поддерживается потребителями, бизнесом, и научные приложения. Среди его наиболее распространенных применений - перемещение табличных данных между программами, которые изначально работают с несовместимыми (часто проприетарными или недокументированными) форматами. Это работает, несмотря на несоблюдение RFC 4180 (или любого другого стандарта), потому что многие программы поддерживают варианты формата CSV для импорта данных.
Например, пользователю может потребоваться передать информацию из программы базы данных, которая хранит данные в частном формате, в электронную таблицу, которая использует совершенно другой формат. Программа базы данных, скорее всего, может экспортировать свои данные в формате CSV; затем экспортированный файл CSV может быть импортирован программой электронных таблиц.
RFC 4180 предлагает спецификацию для формата CSV; однако на практике часто не следует RFC, и термин «CSV» может относиться к любому файлу, который:
В рамках этих общих ограничений используется множество вариаций. Следовательно, без дополнительной информации (например, соблюдается ли 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" для значений, разделенных табуляцией..
Другие различия в реализации включают обработку более распространенных разделителей полей (таких как пробел или точка с запятой) и символов новой строки внутри текстовых полей. Еще одна тонкость - это интерпретация пустой строки: она может в равной степени быть результатом записи записи из нулевых полей или записи одного поля нулевой длины; при этом расшифровка неоднозначна.
В 2011 году Open Knowledge International (OKI) и различные партнеры создали рабочую группу по протоколам данных, которая позже превратилась в инициативу Frictionless Data. Одним из основных форматов, которые они выпустили, был пакет табличных данных. Пакет табличных данных в значительной степени основан на CSV, используя его в качестве основного формата передачи данных и добавляя метаданные базового типа и схемы (в CSV отсутствует какая-либо информация о типе, чтобы отличить строку «1» от числа 1).
Frictionless Data Initiative также предоставила стандартный формат описания диалектов CSV для описания различных диалектов CSV, например, указав разделитель полей или правила цитирования.
В 2013 году W3C Рабочая группа «CSV в Интернете» начала определять технологии, обеспечивающие более высокую совместимость веб-приложений, использующих CSV или аналогичные форматы. Рабочая группа завершила свою работу в феврале 2016 года и официально закрыта в марте 2016 года с выпуском набора документов и рекомендаций W3C для моделирования «табличных данных» и улучшения CSV с помощью метаданных и семантики..
Технический стандарт 2005 года RFC 4180 формализует формат файла CSV и определяет тип MIME «текст / csv» для обработки текстовых файлов. на основе полей. Однако интерпретация текста каждого поля по-прежнему зависит от приложения. Файлы, соответствующие стандарту RFC 4180, могут упростить обмен CSV и должны быть широко переносимыми. Среди его требований:
Формат может обрабатываться большинством программ, которые утверждают, что читают файлы CSV. Исключениями являются: (а) программы могут не поддерживать разрывы строк в цитируемых полях, (б) программы могут путать необязательный заголовок с данными или интерпретировать первую строку данных как необязательный заголовок и (в) двойные кавычки в поле могут не быть разбирается правильно автоматически.
Существует множество неофициальных документов, описывающих форматы "CSV". IETF RFC 4180 (кратко изложено выше) определяет формат для «text / csv» типа MIME, зарегистрированного с помощью правил IANA.
, типичных для эти и другие спецификации и реализации "CSV" следующие:
ord (',') * 256..ord (',') * 256 + 255
). Если это соглашение о «простом тексте» не соблюдается, то CSV-файл больше не содержит достаточной информации для его правильной интерпретации, CSV-файл, скорее всего, не переживет передачу через разные компьютерные архитектуры и не будет соответствовать типу MIME text / csv.1997, Ford, E350
«1997», «Ford», «E350»
1997, Ford, E350, «Супер роскошный грузовик»
1997, Ford, E350, "Super", "luxury" "truck"
1997, Ford, E350, «Давай, теперь они идут быстро»
1997, Ford, E350 не то же самое, что 1997, Ford, E350
1997, "Ford", E350
1997, Ford, E350, «Супер роскошный грузовик»
Лос-Анджелес, 34 ° 03 'северной широты, 118 ° 15' западной долготы, Нью-Йорк, 40 ° 42'46 ″ северной широты, 74 ° 00′21 ″ з.д. 03 ″ E
Год, Марка, Модель 1997, Ford, E350 2000, Mercury, Cougar
Год | Сделать | Модель | Описание | Цена |
---|---|---|---|---|
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 следующим образом:
Год, Марка, Модель, Описание, Цена 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. Однако этот метод неправильно обрабатывает запятые в строках в кавычках.