Формат файла CSV

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

или перетащите их сюда · изображения, видео, аудио и документы · до 2 ГБ

Что такое CSV?

Файл CSV — это текст, где каждая строка является записью, а столбцы разделены разделителем. Соглашение старше большинства используемого сегодня софта и было формально описано лишь в 2005 году в RFC 4180 — поэтому реализации расходятся в деталях. Здесь нет оформления, формул, нескольких листов и типов данных: только символы.

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

Все ловушки происходят из того, что формат никак себя не описывает. В файле не указаны ни кодировка, ни разделитель, ни то, как типизировать значения, поэтому принимающая программа угадывает — а Excel угадывает особенно агрессивно, превращая артикулы в даты и срезая ведущие нули у почтовых индексов и идентификаторов.

Расширение.csv
КатегорияДокумент
MIME-типtext/csv
Год появления2005
РазработчикIETF RFC 4180
СжатиеНет (без сжатия)
Рекламный блок — включите рекламу в public/ads.js · landing-article

CSV: частые вопросы

Почему Excel помещает весь CSV в один столбец?
Потому что локаль системы ожидает другой разделитель. Во многих европейских локалях Excel считает разделителем точку с запятой и игнорирует запятые. Пользуйтесь «Данные → Из текста/CSV» и задавайте разделитель явно вместо двойного клика по файлу.
Почему из данных пропадают ведущие нули?
Потому что Excel читает значения без кавычек как числа, а у числа ведущих нулей не бывает: 01234 превращается в 1234. Страдают почтовые индексы, артикулы и телефоны. Импортируйте такой столбец явно как текст, а не давайте Excel угадывать.
Почему мои значения превратились в даты?
Excel автоматически преобразует всё, что похоже на дату: 1-2 становится 1 февраля, а MAR1 — мартовской датой. Проблема настолько известна, что генетики переименовали несколько генов, чтобы Excel перестал их портить. Задавайте таким столбцам текстовый тип при импорте.
Какую кодировку использовать для CSV?
UTF-8, и добавьте метку порядка байтов, если файл будут открывать в Excel: без неё Excel может неверно прочитать буквы с диакритикой и нелатинские символы. Если инструмент показывает имена вереницей вопросительных знаков или кракозябрами, он читает файл не в той кодировке.
Как обрабатываются запятые внутри значения?
Значение заключается в двойные кавычки, поэтому `"Иванов, Иван"` остаётся одним полем. Кавычка внутри закавыченного значения удваивается. Любой корректный читатель следует этому правилу, но файлы, правленные руками, часто его нарушают — отсюда и съехавшие столбцы.
CSV или XLSX для обмена данными?
CSV — когда другая система будет импортировать голые значения: он меньше, проще и читается везде. XLSX — когда поездку должны пережить формулы, оформление, несколько листов или типы данных. Экспорт в CSV всё это отбрасывает окончательно.

Конвертировать из CSV

Конвертировать в CSV