> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> Документация по формату CSV

# CSV

<div id="description">
  ## Описание
</div>

Формат Comma Separated Values ([RFC](https://tools.ietf.org/html/rfc4180)).
При форматировании строки заключаются в двойные кавычки. Двойная кавычка внутри строки выводится как две двойные кавычки подряд.
Других правил экранирования символов не предусмотрено.

* Дата и дата-время заключаются в двойные кавычки.
* Числа выводятся без кавычек.
* Значения разделяются символом-разделителем, которым по умолчанию служит `,`. Символ-разделитель задаётся в настройке [format\_csv\_delimiter](/docs/ru/reference/settings/formats#format_csv_delimiter).
* Строки разделяются символом перевода строки Unix (LF).
* Массивы сериализуются в CSV следующим образом:
  * сначала массив сериализуется в строку, как в формате TabSeparated
  * получившаяся строка выводится в CSV в двойных кавычках.
* Tuple в формате CSV сериализуются как отдельные столбцы (то есть их вложенность в Tuple теряется).

```bash theme={null}
$ clickhouse-client --format_csv_delimiter="|" --query="INSERT INTO test.csv FORMAT CSV" < data.csv
```

<Note>
  По умолчанию используется разделитель `,`
  Подробнее см. настройку [format\_csv\_delimiter](/docs/ru/reference/settings/formats#format_csv_delimiter).
</Note>

При разборе все значения могут быть как в кавычках, так и без них. Поддерживаются и двойные, и одинарные кавычки.

Строки также могут быть записаны без кавычек. В этом случае они разбираются до символа-разделителя или перевода строки (CR или LF).
Однако в нарушение RFC при разборе строк без кавычек начальные и конечные пробелы и символы табуляции игнорируются.
Поддерживаются следующие типы перевода строки: Unix (LF), Windows (CR LF) и Mac OS Classic (CR LF).

`NULL` форматируется в соответствии с настройкой [format\_csv\_null\_representation](/docs/ru/reference/settings/formats#format_csv_null_representation) (значение по умолчанию — `\N`).

Во входных данных значения `ENUM` могут быть представлены как именами, так и идентификаторами.
Сначала мы пытаемся сопоставить входное значение с именем `ENUM`.
Если это не удаётся и входное значение является числом, мы пытаемся сопоставить это число с идентификатором `ENUM`.
Если входные данные содержат только идентификаторы `ENUM`, рекомендуется включить настройку [input\_format\_csv\_enum\_as\_number](/docs/ru/reference/settings/formats#input_format_csv_enum_as_number), чтобы оптимизировать разбор `ENUM`.

<div id="example-usage">
  ## Пример использования
</div>

<div id="format-settings">
  ## Настройки формата
</div>

| Настройка                                                                                                                                             | Описание                                                                                                                                              | По умолчанию | Примечания                                                                                                                                                                                                 |
| ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [format\_csv\_delimiter](/docs/ru/reference/settings/formats#format_csv_delimiter)                                                                         | символ, который используется как разделитель в данных CSV.                                                                                            | `,`          |                                                                                                                                                                                                            |
| [format\_csv\_allow\_single\_quotes](/docs/ru/reference/settings/formats#format_csv_allow_single_quotes)                                                   | разрешает строки в одинарных кавычках.                                                                                                                | `true`       |                                                                                                                                                                                                            |
| [format\_csv\_allow\_double\_quotes](/docs/ru/reference/settings/formats#format_csv_allow_double_quotes)                                                   | разрешает строки в двойных кавычках.                                                                                                                  | `true`       |                                                                                                                                                                                                            |
| [format\_csv\_null\_representation](/docs/ru/reference/settings/formats#format_tsv_null_representation)                                                    | настраиваемое представление значения NULL в формате CSV.                                                                                              | `\N`         |                                                                                                                                                                                                            |
| [input\_format\_csv\_empty\_as\_default](/docs/ru/reference/settings/formats#input_format_csv_empty_as_default)                                            | считать пустые поля во входных данных CSV значениями по умолчанию.                                                                                    | `true`       | Для сложных выражений значений по умолчанию также должна быть включена настройка [input\_format\_defaults\_for\_omitted\_fields](/docs/ru/reference/settings/formats#input_format_defaults_for_omitted_fields). |
| [input\_format\_csv\_missing\_nullable\_as\_empty\_string](/docs/ru/reference/settings/formats#input_format_csv_missing_nullable_as_empty_string)          | считывать отсутствующее значение `Nullable(String)` как пустую строку вместо NULL, независимо от `input_format_csv_empty_as_default`.                 | `false`      |                                                                                                                                                                                                            |
| [input\_format\_csv\_enum\_as\_number](/docs/ru/reference/settings/formats#input_format_csv_enum_as_number)                                                | интерпретировать вставленные значения enum в форматах CSV как индексы enum.                                                                           | `false`      |                                                                                                                                                                                                            |
| [input\_format\_csv\_use\_best\_effort\_in\_schema\_inference](/docs/ru/reference/settings/formats#input_format_csv_use_best_effort_in_schema_inference)   | использовать дополнительные приемы и эвристики для определения схемы в формате CSV. Если настройка отключена, все поля будут определены как `String`. | `true`       |                                                                                                                                                                                                            |
| [input\_format\_csv\_arrays\_as\_nested\_csv](/docs/ru/reference/settings/formats#input_format_csv_arrays_as_nested_csv)                                   | при чтении Array из CSV ожидать, что его элементы были сериализованы как вложенный CSV, а затем помещены в строку.                                    | `false`      |                                                                                                                                                                                                            |
| [output\_format\_csv\_crlf\_end\_of\_line](/docs/ru/reference/settings/formats#output_format_csv_crlf_end_of_line)                                         | если установлено значение `true`, в качестве окончания строки в выходном формате CSV будет использоваться `\r\n` вместо `\n`.                         | `false`      |                                                                                                                                                                                                            |
| [input\_format\_csv\_skip\_first\_lines](/docs/ru/reference/settings/formats#input_format_csv_skip_first_lines)                                            | пропускать указанное количество строк в начале данных.                                                                                                | `0`          |                                                                                                                                                                                                            |
| [input\_format\_csv\_detect\_header](/docs/ru/reference/settings/formats#input_format_csv_detect_header)                                                   | автоматически определять заголовок с именами и типами в формате CSV.                                                                                  | `true`       |                                                                                                                                                                                                            |
| [input\_format\_csv\_skip\_trailing\_empty\_lines](/docs/ru/reference/settings/formats#input_format_csv_skip_trailing_empty_lines)                         | пропускать пустые строки в конце данных.                                                                                                              | `false`      |                                                                                                                                                                                                            |
| [input\_format\_csv\_trim\_whitespaces](/docs/ru/reference/settings/formats#input_format_csv_trim_whitespaces)                                             | удалять пробелы и символы табуляции в строках CSV без кавычек.                                                                                        | `true`       |                                                                                                                                                                                                            |
| [input\_format\_csv\_allow\_whitespace\_or\_tab\_as\_delimiter](/docs/ru/reference/settings/formats#input_format_csv_allow_whitespace_or_tab_as_delimiter) | разрешить использовать пробел или табуляцию как разделитель полей в строках CSV.                                                                      | `false`      |                                                                                                                                                                                                            |
| [input\_format\_csv\_allow\_variable\_number\_of\_columns](/docs/ru/reference/settings/formats#input_format_csv_allow_variable_number_of_columns)          | разрешить переменное количество столбцов в формате CSV, игнорировать лишние столбцы и использовать значения по умолчанию для отсутствующих столбцов.  | `false`      |                                                                                                                                                                                                            |
| [input\_format\_csv\_use\_default\_on\_bad\_values](/docs/ru/reference/settings/formats#input_format_csv_use_default_on_bad_values)                        | разрешить устанавливать для столбца значение по умолчанию, если десериализация поля CSV не удалась из-за некорректного значения.                      | `false`      |                                                                                                                                                                                                            |
| [input\_format\_csv\_try\_infer\_numbers\_from\_strings](/docs/ru/reference/settings/formats#input_format_csv_try_infer_numbers_from_strings)              | пытаться определять числа в строковых полях при определении схемы.                                                                                    | `false`      |                                                                                                                                                                                                            |
