CSV
Описание
Формат значений, разделённых запятыми (Comma Separated Values, RFC). При форматировании строки заключаются в двойные кавычки. Двойная кавычка внутри строки выводится как две двойные кавычки подряд. Других правил экранирования символов нет.
- Даты и дата-время заключаются в двойные кавычки.
- Числа выводятся без кавычек.
- Значения разделяются символом-разделителем, который по умолчанию —
,. Символ-разделитель задаётся настройкой format_csv_delimiter. - Строки разделяются с использованием перевода строки в стиле Unix (LF).
- Массивы сериализуются в CSV следующим образом:
- сначала массив сериализуется в строку так же, как в формате TabSeparated,
- Полученная строка выводится в CSV в двойных кавычках.
- Кортежи в формате CSV сериализуются как отдельные столбцы (то есть их вложенность в кортеже теряется).
По умолчанию разделителем является ,.
Дополнительные сведения см. в настройке format_csv_delimiter.
При разборе все значения могут обрабатываться как с кавычками, так и без них. Поддерживаются как двойные, так и одинарные кавычки.
Строки также могут быть без кавычек. В этом случае они разбираются до символа-разделителя или символа новой строки (CR или LF). Однако в нарушение RFC при разборе строк без кавычек начальные и конечные пробелы и табуляции игнорируются. Переход на новую строку поддерживает форматы: Unix (LF), Windows (CR LF) и Mac OS Classic (CR LF).
NULL форматируется в соответствии с настройкой format_csv_null_representation (значение по умолчанию — \N).
Во входных данных значения ENUM могут быть представлены как именами, так и идентификаторами.
Сначала выполняется попытка сопоставить входное значение с именем ENUM.
Если это не удаётся и входное значение является числом, выполняется попытка сопоставить это число с идентификатором ENUM.
Если входные данные содержат только идентификаторы ENUM, рекомендуется включить настройку input_format_csv_enum_as_number для оптимизации разбора ENUM.
Пример использования
Настройки формата
| Параметр | Описание | Значение по умолчанию | Примечания |
|---|---|---|---|
| format_csv_delimiter | символ, который рассматривается как разделитель в данных CSV. | , | |
| format_csv_allow_single_quotes | разрешать строки в одинарных кавычках. | true | |
| format_csv_allow_double_quotes | разрешать строки в двойных кавычках. | true | |
| format_csv_null_representation | пользовательское представление NULL в формате CSV. | \N | |
| input_format_csv_empty_as_default | рассматривать пустые поля во входном CSV как значения по умолчанию. | true | Для сложных выражений по умолчанию также должен быть включён input_format_defaults_for_omitted_fields. |
| input_format_csv_enum_as_number | рассматривать вставленные значения Enum в CSV как индексы Enum. | false | |
| input_format_csv_use_best_effort_in_schema_inference | использовать дополнительные приёмы и эвристики для определения схемы в формате CSV. Если отключено, все поля будут интерпретироваться как строки. | true | |
| input_format_csv_arrays_as_nested_csv | при чтении Array из CSV ожидать, что его элементы были сериализованы во вложенный CSV и затем помещены в строку. | false | |
| output_format_csv_crlf_end_of_line | если установлено значение true, конец строки в выходном формате CSV будет \r\n вместо \n. | false | |
| input_format_csv_skip_first_lines | пропускать указанное количество строк в начале данных. | 0 | |
| input_format_csv_detect_header | автоматически определять заголовок с именами и типами в формате CSV. | true | |
| input_format_csv_skip_trailing_empty_lines | пропускать завершающие пустые строки в конце данных. | false | |
| input_format_csv_trim_whitespaces | обрезать пробелы и табуляции в строках CSV вне кавычек. | true | |
| input_format_csv_allow_whitespace_or_tab_as_delimiter | разрешать использовать пробел или табуляцию как разделитель полей в строках CSV. | false | |
| input_format_csv_allow_variable_number_of_columns | разрешать переменное количество столбцов в формате CSV, игнорировать лишние столбцы и использовать значения по умолчанию для отсутствующих столбцов. | false | |
| input_format_csv_use_default_on_bad_values | разрешать устанавливать значение по умолчанию для столбца, когда десериализация поля CSV не удалась из‑за некорректного значения. | false | |
| input_format_csv_try_infer_numbers_from_strings | пытаться выводить числовые значения из строковых полей при определении схемы. | false |