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

> Движок позволяет импортировать и экспортировать данные в SQLite, а также поддерживает запросы к таблицам SQLite напрямую из ClickHouse.

# Движок таблицы SQLite

export const CloudNotSupportedBadge = () => {
  return <div className="cloudNotSupportedBadge">
            <div className="cloudNotSupportedIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.5" d="M6.33366 12.6666L12.3739 12.6667C13.6593 12.6667 14.7073 11.6187 14.7073 10.3334C14.7073 9.04804 13.6593 8.00003 12.3739 8.00003C12.3739 8.00003 12.3337 7.66659 12.0003 7.33325M10.667 5.33322C8.00033 2.33325 4.45395 4.78537 4.14195 6.68203C2.55728 6.7627 1.29395 8.06203 1.29395 9.6667C1.29395 11.3234 2.66699 12.6666 4.00033 12.6666" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.5" d="M2.66699 14L12.0003 4.66663" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>

        </div>
            Не поддерживается в ClickHouse Cloud
        </div>;
};

<CloudNotSupportedBadge />

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

<div id="creating-a-table">
  ## Создание таблицы
</div>

```sql theme={null}
    CREATE TABLE [IF NOT EXISTS] [db.]table_name
    (
        name1 [type1],
        name2 [type2], ...
    ) ENGINE = SQLite('db_path', 'table')
```

**Параметры движка**

* `db_path` — Путь к файлу SQLite с базой данных.
* `table` — Имя таблицы в базе данных SQLite или запрос, передаваемый в SQLite как есть (см. [Передача запроса вместо имени таблицы](#passing-a-query)).

<div id="passing-a-query">
  ## Передача запроса вместо имени таблицы
</div>

Вместо имени таблицы в качестве аргумента `table` можно указать `SELECT`-запрос, который передаётся в SQLite как есть. Структура таблицы определяется по результату запроса. Запрос можно записать либо как подзапрос, либо обернуть в функцию `query`:

```sql theme={null}
CREATE TABLE sqlite_table ENGINE = SQLite('sqlite.db', (SELECT col1, col2 FROM table1 WHERE col2 > 1));
CREATE TABLE sqlite_table ENGINE = SQLite('sqlite.db', query('SELECT col1, col2 FROM table1 WHERE col2 > 1'));
```

Такая таблица доступна только для чтения: операция `INSERT` в неё запрещена. Тот же синтаксис поддерживается табличной функцией [`sqlite`](/docs/ru/reference/functions/table-functions/sqlite).

<Note>
  Форма подзапроса `(SELECT ...)` разбирается ClickHouse и повторно сериализуется перед отправкой в SQLite. Поэтому она должна быть корректным ClickHouse SQL. Чтобы передать специфичный для SQLite синтаксис, который ClickHouse не разбирает, используйте форму `query('...')`, текст которой отправляется в SQLite дословно.

  Любые внешние `WHERE`, `LIMIT`, агрегирование и т. д. из окружающего запроса к ClickHouse **не** проталкиваются в передаваемый запрос — они применяются в ClickHouse после получения полного результата запроса. Чтобы ограничить объём данных, считываемых из SQLite, поместите фильтр внутрь передаваемого запроса. При [`external_table_strict_query = 1`](/docs/ru/reference/settings/session-settings#external_table_strict_query) внешний фильтр, который нельзя протолкнуть, приводит к исключению вместо того, чтобы применяться локально.
</Note>

<div id="data-types-support">
  ## Поддержка типов данных
</div>

Если в определении таблицы явно указать типы столбцов ClickHouse, из столбцов SQLite TEXT можно разобрать следующие типы ClickHouse:

* [Date](/docs/ru/reference/data-types/date), [Date32](/docs/ru/reference/data-types/date32)
* [DateTime](/docs/ru/reference/data-types/datetime), [DateTime64](/docs/ru/reference/data-types/datetime64)
* [UUID](/docs/ru/reference/data-types/uuid)
* [Enum8, Enum16](/docs/ru/reference/data-types/enum)
* [Decimal32, Decimal64, Decimal128, Decimal256](/docs/ru/reference/data-types/decimal)
* [FixedString](/docs/ru/reference/data-types/fixedstring)
* Все целочисленные типы ([UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64](/docs/ru/reference/data-types/int-uint))
* [Float32, Float64](/docs/ru/reference/data-types/float)

Сопоставление типов по умолчанию см. в разделе [движок базы данных SQLite](/docs/ru/reference/engines/database-engines/sqlite#data_types-support).

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

Показан запрос на создание таблицы SQLite:

```sql theme={null}
SHOW CREATE TABLE sqlite_db.table2;
```

```text theme={null}
CREATE TABLE SQLite.table2
(
    `col1` Nullable(Int32),
    `col2` Nullable(String)
)
ENGINE = SQLite('sqlite.db','table2');
```

Возвращает данные из таблицы:

```sql theme={null}
SELECT * FROM sqlite_db.table2 ORDER BY col1;
```

```text theme={null}
┌─col1─┬─col2──┐
│    1 │ text1 │
│    2 │ text2 │
│    3 │ text3 │
└──────┴───────┘
```

**См. также**

* [SQLite](/docs/ru/reference/engines/database-engines/sqlite) движок
* [sqlite](/docs/ru/reference/functions/table-functions/sqlite) табличная функция
