> ## 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.

# schema_inference_*: настройки формата

> Настройки формата ClickHouse из автоматически сгенерированной группы schema_inference_*.

export const SettingsInfoBlock = ({type, default_value, changeable_without_restart}) => {
  return <div className="not-prose" style={{
    display: "flex",
    flexWrap: "wrap",
    alignItems: "baseline",
    columnGap: "0.5rem",
    rowGap: "0.125rem",
    margin: "0.375rem 0",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <div style={{
    fontWeight: 600,
    opacity: 0.72
  }}>Тип</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{type}</div>
      <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>По умолчанию</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          Изменяется без перезапуска
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

Эти настройки автоматически сгенерированы из [исходного кода](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/FormatFactorySettings.h).

<div id="schema_inference_hints">
  ## schema\_inference\_hints
</div>

Список имён столбцов и типов, используемых в качестве подсказок при определении схемы для форматов без схемы.

Пример:

Запрос:

```sql theme={null}
desc format(JSONEachRow, '{"x" : 1, "y" : "String", "z" : "0.0.0.0" }') settings schema_inference_hints='x UInt8, z IPv4';
```

Результат:

```sql theme={null}
x   UInt8
y   Nullable(String)
z   IPv4
```

<Note>
  Если `schema_inference_hints` задан некорректно, или в нём есть опечатка, неверный тип данных и т. д., то `schema&#95;inference&#95;hints` будет полностью проигнорирован.
</Note>

<div id="schema_inference_make_columns_nullable">
  ## schema\_inference\_make\_columns\_nullable
</div>

<SettingsInfoBlock type="UInt64Auto" default_value="3" />

Управляет тем, будут ли типы, определённые при определении схемы, иметь тип `Nullable`.
Возможные значения:

* 0 - определённый тип никогда не будет `Nullable` (используйте input\_format\_null\_as\_default, чтобы указать, что делать со значениями null в этом случае),
* 1 - все определённые типы будут `Nullable`,
* 2 или `auto` - определённый тип будет `Nullable`, только если столбец содержит `NULL` в выборке, разбираемой при определении схемы, или метаданные файла содержат информацию о допустимости null для столбца,
* 3 - допустимость null для определённого типа будет соответствовать метаданным файла, если формат их поддерживает (например, Parquet); в противном случае тип всегда будет `Nullable` (например, CSV).

<div id="schema_inference_make_json_columns_nullable">
  ## schema\_inference\_make\_json\_columns\_nullable
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Управляет тем, будут ли типы JSON, определённые при автоматическом определении схемы, становиться `Nullable`.
Если этот параметр включён вместе с schema\_inference\_make\_columns\_nullable, определённый тип JSON будет `Nullable`.

<div id="schema_inference_mode">
  ## schema\_inference\_mode
</div>

<SettingsInfoBlock type="SchemaInferenceMode" default_value="default" />

Режим определения схемы. 'default' — предполагается, что все файлы имеют одинаковую схему и схему можно определить по любому из файлов, 'union' — файлы могут иметь разные схемы, и итоговая схема должна представлять собой объединение схем всех файлов
