Формат файла CSV
CSV — универсальный формат табличных данных: текстовый файл, который читает любая таблица, база данных и язык программирования, — с несколькими ловушками, о которых стоит знать.
или перетащите их сюда · изображения, видео, аудио и документы · до 2 ГБ
Что такое CSV?
Файл CSV — это текст, где каждая строка является записью, а столбцы разделены разделителем. Соглашение старше большинства используемого сегодня софта и было формально описано лишь в 2005 году в RFC 4180 — поэтому реализации расходятся в деталях. Здесь нет оформления, формул, нескольких листов и типов данных: только символы.
Именно эта простота и обеспечивает CSV выживание. Его читает любой импорт в базу данных, любой аналитический инструмент, любой скриптовый язык и любая таблица, поэтому он естественный формат передачи между системами, у которых больше нет ничего общего. Чего он не умеет — так это сохранить хоть что-то о том, как таблица выглядела и считала.
Все ловушки происходят из того, что формат никак себя не описывает. В файле не указаны ни кодировка, ни разделитель, ни то, как типизировать значения, поэтому принимающая программа угадывает — а Excel угадывает особенно агрессивно, превращая артикулы в даты и срезая ведущие нули у почтовых индексов и идентификаторов.
| Расширение | .csv |
|---|---|
| Категория | Документ |
| MIME-тип | text/csv |
| Год появления | 2005 |
| Разработчик | IETF RFC 4180 |
| Сжатие | Нет (без сжатия) |
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 всё это отбрасывает окончательно.