Перейти к основному содержанию
Перейти к основному содержанию

CSV

Описание

Формат значений, разделённых запятыми (Comma Separated Values, RFC). При форматировании строки заключаются в двойные кавычки. Двойная кавычка внутри строки выводится как две двойные кавычки подряд. Других правил экранирования символов нет.

  • Даты и дата-время заключаются в двойные кавычки.
  • Числа выводятся без кавычек.
  • Значения разделяются символом-разделителем, который по умолчанию — ,. Символ-разделитель задаётся настройкой format_csv_delimiter.
  • Строки разделяются с использованием перевода строки в стиле Unix (LF).
  • Массивы сериализуются в CSV следующим образом:
    • сначала массив сериализуется в строку так же, как в формате TabSeparated,
    • Полученная строка выводится в CSV в двойных кавычках.
  • Кортежи в формате CSV сериализуются как отдельные столбцы (то есть их вложенность в кортеже теряется).
$ clickhouse-client --format_csv_delimiter="|" --query="INSERT INTO test.csv FORMAT CSV" < data.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