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

> Documentation du format SQLite

# SQLite

| Entrée | Sortie | Alias |
| - | - | - |
| ✔ | ✔ | |

<h2 id="description">
  Description
</h2>

Le format `SQLite` permet de lire et d'écrire un fichier de base de données SQLite.

En sortie, ClickHouse écrit le résultat de la requête dans une seule table de la base de données SQLite. En entrée, ClickHouse lit une seule table de la base de données SQLite.

Pour les fichiers ordinaires locaux, ClickHouse ouvre directement le fichier de base de données SQLite. Pour les autres flux d'entrée et de sortie, ClickHouse matérialise la base de données SQLite en mémoire.

En entrée, ClickHouse lit par défaut la première table de la base de données SQLite. Vous pouvez modifier ce comportement avec le paramètre `input_format_sqlite_table_name`. En sortie, le nom de table par défaut est `table` ; vous pouvez le modifier avec le paramètre `output_format_sqlite_table_name`.

<h2 id="example-usage">
  Exemple d'utilisation
</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">
  Correspondance des types de données
</h2>

Lorsque ClickHouse écrit des données au format `SQLite`, il crée une table SQLite avec les types déclarés suivants :

| Type de données ClickHouse | Type déclaré SQLite |
| - | - |
| `UInt64`, `Int128`, `UInt128`, `Int256`, `UInt256` | `TEXT` |
| `Bool`, `Int8`, `Int16`, `Int32`, `Int64`, `UInt8`, `UInt16`, `UInt32` | `INTEGER` |
| Types à virgule flottante | `REAL` |
| Autres types | `TEXT` |

Pour les colonnes `Float32` et `Float64`, les valeurs autres que `NaN` sont écrites avec les classes de stockage natives de SQLite, tandis que les valeurs `NaN` sont écrites avec la sérialisation texte de ClickHouse. Les valeurs `Bool` et les valeurs entières ordinaires sont elles aussi écrites avec les classes de stockage natives de SQLite. Les entiers larges et les types complexes sont écrits avec la sérialisation texte de ClickHouse. Les valeurs `NULL` sont écrites sous forme de `NULL` SQLite.

Lorsque ClickHouse infère un schéma à partir d'une entrée SQLite, il applique la même correspondance que le [moteur de base de données SQLite](/docs/engines/database-engines/sqlite#data_types-support) :

| Type déclaré SQLite | Type inféré par ClickHouse |
| - | - |
| Le nom du type contient `INT` | `Int64` |
| `REAL`, `FLOAT`, `DOUBLE` | `Float64` |
| Autres types, y compris `TEXT` et `BLOB` | `String` |

Par défaut, ClickHouse encapsule le type inféré dans `Nullable` si la colonne SQLite correspondante autorise `NULL` ; les colonnes `NOT NULL` ne sont pas converties en `Nullable`. Vous pouvez modifier ce comportement à l'aide du paramètre [`schema_inference_make_columns_nullable`](/docs/fr/reference/settings/formats/schema-inference#schema_inference_make_columns_nullable).

L'inférence de schéma ne conserve pas les types de données ClickHouse d'origine. Par exemple, `Bool` est écrit en tant que `INTEGER` SQLite et inféré en tant que `Int64`, tandis que `Date`, `DateTime`, `Decimal`, `UUID`, `IPv4`, `IPv6`, `Enum`, `Array`, `Tuple` et `Map` sont écrits en tant que `TEXT` SQLite et inférés en tant que `String`.

Lorsque la structure de la table ClickHouse est spécifiée explicitement, les valeurs à virgule flottante sont lues en tant que valeurs `REAL` SQLite, avec un repli sur le format texte pour `NaN`. Les autres valeurs SQLite sont lues sous forme de texte, puis converties dans les types ClickHouse demandés.

<h2 id="format-settings">
  Paramètres de format
</h2>

| Paramètre | Description | Valeur par défaut |
| - | - | - |
| [`input_format_sqlite_table_name`](/docs/fr/reference/settings/formats/input-format#input_format_sqlite_table_name) | Nom de la table à lire dans l'entrée SQLite. Si ce paramètre est vide, la première table est utilisée. | `''` |
| [`output_format_sqlite_table_name`](/docs/fr/reference/settings/formats/output-format#output_format_sqlite_table_name) | Nom de la table dans la sortie SQLite. | `'table'` |
