> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-vortex-format.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

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

# SQLite

| Входные данные | Выходные данные | Псевдоним |
| - | - | - |
| ✔ | ✔ | |

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

Формат `SQLite` предназначен для чтения и записи файлов баз данных SQLite.

При выводе ClickHouse записывает результат запроса в одну таблицу базы данных SQLite. При вводе ClickHouse читает одну таблицу из базы данных SQLite.

Если это обычный локальный файл, ClickHouse открывает файл базы данных SQLite напрямую. Для остальных входных и выходных потоков ClickHouse материализует базу данных SQLite в памяти.

При вводе ClickHouse по умолчанию читает первую таблицу из базы данных SQLite. Это поведение можно изменить с помощью настройки `input_format_sqlite_table_name`. При выводе по умолчанию используется имя таблицы `table`; его можно изменить с помощью настройки `output_format_sqlite_table_name`.

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

```bash theme={null}
clickhouse-client --query="SELECT number, toString(number) AS s FROM numbers(10) FORMAT SQLite" > data.sqlite
clickhouse-local --input-format SQLite --structure "number UInt64, s String" --query "SELECT * FROM table" < data.sqlite
```

<h2 id="data-types-matching">
  Соответствие типов данных
</h2>

При записи данных в формате `SQLite` ClickHouse создаёт таблицу SQLite со следующими объявленными типами:

| Тип данных ClickHouse | Объявленный тип SQLite |
| - | - |
| `UInt64`, `Int128`, `UInt128`, `Int256`, `UInt256` | `TEXT` |
| `Bool`, `Int8`, `Int16`, `Int32`, `Int64`, `UInt8`, `UInt16`, `UInt32` | `INTEGER` |
| Типы с плавающей запятой | `REAL` |
| Другие типы | `TEXT` |

Для столбцов `Float32` и `Float64` значения, отличные от `NaN`, записываются с использованием нативных классов хранилища SQLite, а значения `NaN` — в текстовой сериализации ClickHouse. Значения `Bool` и обычные целочисленные значения также записываются с использованием нативных классов хранилища SQLite. Широкие целые числа и сложные типы записываются в текстовой сериализации ClickHouse. Значения `NULL` записываются как `NULL` SQLite.

При выводе схемы из входных данных SQLite ClickHouse использует то же соответствие типов, что и [движок баз данных SQLite](/ru/engines/database-engines/sqlite#data_types-support):

| Объявленный тип SQLite | Выведенный тип ClickHouse |
| - | - |
| Имя типа содержит `INT` | `Int64` |
| `REAL`, `FLOAT`, `DOUBLE` | `Float64` |
| Другие типы, включая `TEXT` и `BLOB` | `String` |

По умолчанию ClickHouse оборачивает выведенный тип в `Nullable`, если соответствующий столбец SQLite допускает `NULL`; столбцы `NOT NULL` не оборачиваются в `Nullable`. Это поведение можно изменить с помощью настройки [`schema_inference_make_columns_nullable`](/ru/reference/settings/formats/schema-inference#schema_inference_make_columns_nullable).

При выводе схемы исходные типы данных ClickHouse не сохраняются. Например, `Bool` записывается как `INTEGER` SQLite и выводится как `Int64`, а `Date`, `DateTime`, `Decimal`, `UUID`, `IPv4`, `IPv6`, `Enum`, `Array`, `Tuple` и `Map` записываются как `TEXT` SQLite и выводятся как `String`.

Если структура таблицы ClickHouse задана явно, значения с плавающей запятой читаются как значения `REAL` SQLite, а для `NaN` используется резервное чтение в текстовом виде. Остальные значения SQLite читаются как текст и преобразуются в запрошенные типы ClickHouse.

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

| Настройка | Описание | Значение по умолчанию |
| - | - | - |
| [`input_format_sqlite_table_name`](/ru/reference/settings/formats/input-format#input_format_sqlite_table_name) | Имя таблицы во входных данных SQLite, из которой выполняется чтение. Если значение пустое, используется первая таблица. | `''` |
| [`output_format_sqlite_table_name`](/ru/reference/settings/formats/output-format#output_format_sqlite_table_name) | Имя таблицы в выходных данных SQLite. | `'table'` |
