# Импорт CSV: как работает коннектор

В этой статье вы узнаете, как коннектор «Импорт CSV» загружает файл в хранилище ROMI center: какие есть ограничения, откуда берутся имена и типы колонок. Поля этого коннектора не описываются отдельной статьёй — колонки таблицы всегда те же, что и в вашем файле.

## Что выгружается: один файл — одна таблица

Подключение — это разовый импорт одного файла. Файл загружается в мастере, его строки ложатся в таблицу хранилища, и подключение получает статус «Завершено». Синхронизации нет: изменения в исходном файле в хранилище не попадают.

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

> **Важно**
> Имя таблицы — имя файла латиницей, без номера подключения: «Заказы 2026.csv» даёт `zakazy_2026`. Если в хранилище уже есть таблица с таким именем — от прошлого импорта или другого коннектора, — загрузка остановится с ошибкой «Таблица … уже существует». Не импортируйте два одноимённых файла одновременно: второй затрёт таблицу первого.

> **Примечание**
> Слово `reklama` между подчёркиваниями в имени таблицы (например, из файла «Отчёт реклама Март.csv» получится `otchet_reklama_mart`) режут блокировщики рекламы, и «Просмотр данных» такой таблицы у пользователя с блокировщиком не откроется. Лучше переименовать файл до загрузки.

## Периодичность

Периодичности нет: данные загружаются один раз, в момент сохранения подключения. В меню подключения только «Удалить подключение» — ни «Редактировать», ни «Приостановить выгрузку», ни «Загрузить исторические данные».

## Ограничения

| Что | Ограничение |
| --- | --- |
| Формат | только `.csv` в кодировке UTF-8, метка BOM допускается. Файл с кириллицей в другой кодировке (например Windows-1251) отклоняется с ошибкой. |
| Размер файла | до 100 МБ. |
| Разделитель | `,` или `;` — определяется сам по первой строке. |
| Число импортов | до 10 на проект (считаются завершённые и не удалённые). |
| Тариф | импорт бесплатный и в лимит подключений тарифа не входит. |

> **Важно**
> Разделитель определяется по первой строке: `;` выбирается, если точек с запятой в ней больше, чем запятых, иначе `,`. Запятые внутри заголовков в кавычках тоже считаются — у файла с разделителем `;` и заголовками `"Сумма, руб.";"Дата"` разделитель определится как `,`, и колонки разберутся неверно.

## Как сохраняет данные

*   **Куда:** хранилище ROMI center на движке ClickHouse. Хранилище на PostgreSQL CSV-импорт не поддерживает — сохранение подключения закончится ошибкой.
*   **Таблица создаётся при сохранении подключения**, файл записывается в неё целиком.
*   **Структура:** движок `MergeTree`, без разбиения на партиции и без ключа сортировки.
*   **Колонки берутся из первой строки** и сопоставляются с данными по позиции.
*   **Обновить данные нельзя.** Чтобы загрузить новую версию файла, удалите подключение и импортируйте файл заново — удаление подключения удаляет и таблицу.

## Настройки

| Шаг мастера | Что делается |
| --- | --- |
| «Доступ» | Загрузка файла — перетаскиванием или выбором. Мастер показывает размер, число строк, разделитель, число колонок и имя таблицы. |
| «Выбор полей» | Какие колонки импортировать: по умолчанию отмечены все. Тип каждой колонки определён автоматически и не меняется. |

После импорта подключение не редактируется: выбрать другие колонки можно только новым импортом.

## Имена колонок

| Заголовок в файле | Колонка в таблице |
| --- | --- |
| Текст | Транслитерация в нижнем регистре, только латиница, цифры и `_`: «Дата» → `data`. Пробел становится `_`, а дефис, точка и запятая выбрасываются: «UTM-метка» → `utmmetka`. |
| Начинается с цифры | С префиксом `col_`: «2026 план» → `col_2026_plan`. |
| Пустой | `col_`, следующий пустой — `col__2`. |
| Повторяется | Суффикс `_2`, `_3` по порядку колонок. |

Подписью колонки в «Просмотре данных» остаётся исходный заголовок.

## Типы колонок

Тип определяется по непустым значениям первых 1000 строк и дальше не меняется:

| Тип | Тип поля | Когда выбирается |
| --- | --- | --- |
| Целое число | Целое число | все значения — целые числа без пробелов и ведущего нуля, не длиннее 18 цифр |
| Дробное число | Дробное число | все значения — числа, и хотя бы у одного есть дробная часть через точку или запятую |
| Дата | Дата | все значения в формате `2026-09-20` |
| Дата и время | Дата и время | все значения в формате `2026-09-20 14:05` или `2026-09-20T14:05:33` |
| Строка | Строка | всё остальное, в том числе пустая колонка |

> **Важно**
> Даты в русском формате остаются строкой. `20.09.2026`, `20/09/2026` и любые другие форматы, кроме `2026-09-20`, дают строковую колонку. Так же строкой становятся числа с пробелами (`1 234`), знаком процента (`12%`), валютой и ведущим нулём (`007`).

> **Важно**
> Строки после первой тысячи тип не проверяют — значения к нему приводятся. Если в целочисленной колонке дальше встретится `abc` или прочерк «-», запишется 0, `12.5` станет 12, а «1 234» — 1. В колонке даты значение в другом формате разбирается как получится: `20.09.2026` запишется верно, а `01.02.26` и `15.03` станут датой импорта. В колонке даты всё раньше 1970 года станет `1970-01-01`, всё позже 2149 года — `2149-06-06`.
