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

> Le moteur permet d'importer et d'exporter des données vers SQLite, et prend en charge les requêtes directes sur les tables SQLite depuis ClickHouse.

# Moteur de table 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>
            Non pris en charge par ClickHouse Cloud
        </div>;
};

<CloudNotSupportedBadge />

Le moteur permet d’importer et d’exporter des données vers SQLite et prend en charge les requêtes sur des tables SQLite directement depuis ClickHouse.

<div id="creating-a-table">
  ## Créer une table
</div>

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

**Paramètres du moteur**

* `db_path` — Chemin vers le fichier SQLite contenant une base de données.
* `table` — Nom d’une table de la base de données SQLite, ou requête transmise telle quelle à SQLite (voir [Passer une requête au lieu d’un nom de table](#passing-a-query)).

<div id="passing-a-query">
  ## Passer une requête au lieu d’un nom de table
</div>

Au lieu d’un nom de table, l’argument `table` peut être une requête `SELECT` transmise telle quelle à SQLite. La structure de la table est inférée à partir du résultat de la requête. La requête peut être écrite soit sous forme de sous-requête, soit encapsulée dans la fonction `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'));
```

Une telle table est en lecture seule : les opérations `INSERT` n'y sont pas autorisées. La même syntaxe est prise en charge par la fonction de table [`sqlite`](/docs/fr/reference/functions/table-functions/sqlite).

<Note>
  La forme de sous-requête `(SELECT ...)` est analysée par ClickHouse puis re-sérialisée avant d'être envoyée à SQLite. Elle doit donc être valide en SQL ClickHouse. Pour transmettre une syntaxe spécifique à SQLite que ClickHouse n'analyse pas, utilisez la forme `query('...')`, dont le texte est envoyé tel quel à SQLite.

  Tout `WHERE`, `LIMIT`, toute agrégation, etc. externe de la requête ClickHouse englobante n'est **pas** répercuté dans la requête transmise : ils sont appliqués dans ClickHouse après récupération du résultat complet de la requête. Pour restreindre les données lues depuis SQLite, placez le filtre dans la requête transmise. Avec [`external_table_strict_query = 1`](/docs/fr/reference/settings/session-settings#external_table_strict_query), un filtre externe qui ne peut pas être répercuté est rejeté avec une exception au lieu d'être appliqué localement.
</Note>

<div id="data-types-support">
  ## Prise en charge des types de données
</div>

Lorsque vous spécifiez explicitement les types de colonnes ClickHouse dans la définition de la table, les types ClickHouse suivants peuvent être interprétés à partir de colonnes TEXT SQLite :

* [Date](/docs/fr/reference/data-types/date), [Date32](/docs/fr/reference/data-types/date32)
* [DateTime](/docs/fr/reference/data-types/datetime), [DateTime64](/docs/fr/reference/data-types/datetime64)
* [UUID](/docs/fr/reference/data-types/uuid)
* [Enum8, Enum16](/docs/fr/reference/data-types/enum)
* [Decimal32, Decimal64, Decimal128, Decimal256](/docs/fr/reference/data-types/decimal)
* [FixedString](/docs/fr/reference/data-types/fixedstring)
* Tous les types entiers ([UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64](/docs/fr/reference/data-types/int-uint))
* [Float32, Float64](/docs/fr/reference/data-types/float)

Consultez le [moteur de base de données SQLite](/docs/fr/reference/engines/database-engines/sqlite#data_types-support) pour la correspondance de types par défaut.

<div id="usage-example">
  ## Exemple d'utilisation
</div>

Affiche une requête qui crée la table 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');
```

Renvoie les données contenues dans la table :

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

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

**Voir aussi**

* moteur [SQLite](/docs/fr/reference/engines/database-engines/sqlite)
* fonction de table [sqlite](/docs/fr/reference/functions/table-functions/sqlite)
