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

> Documentación del formato SQLite

# SQLite

| Entrada | Salida | Alias |
| - | - | - |
| ✔ | ✔ | |

<h2 id="description">
  Descripción
</h2>

El formato `SQLite` lee y escribe archivos de base de datos SQLite.

En la salida, ClickHouse escribe el resultado de la consulta en una única tabla de la base de datos SQLite. En la entrada, ClickHouse lee una única tabla de la base de datos SQLite.

En el caso de archivos regulares locales, ClickHouse abre directamente el archivo de base de datos SQLite. Para otros flujos de entrada y salida, ClickHouse materializa la base de datos SQLite en memoria.

En la entrada, ClickHouse lee de forma predeterminada la primera tabla de la base de datos SQLite. Puede modificar este comportamiento con el ajuste `input_format_sqlite_table_name`. En la salida, el nombre de tabla predeterminado es `table`; puede cambiarlo con el ajuste `output_format_sqlite_table_name`.

<h2 id="example-usage">
  Ejemplo de uso
</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">
  Correspondencia de tipos de datos
</h2>

Cuando ClickHouse escribe datos en el formato `SQLite`, crea una tabla de SQLite con los siguientes tipos declarados:

| Tipo de datos de ClickHouse | Tipo declarado en SQLite |
| - | - |
| `UInt64`, `Int128`, `UInt128`, `Int256`, `UInt256` | `TEXT` |
| `Bool`, `Int8`, `Int16`, `Int32`, `Int64`, `UInt8`, `UInt16`, `UInt32` | `INTEGER` |
| Tipos de coma flotante | `REAL` |
| Otros tipos | `TEXT` |

En las columnas `Float32` y `Float64`, los valores distintos de `NaN` se escriben mediante las clases de almacenamiento nativas de SQLite, mientras que los valores `NaN` se escriben mediante la serialización de texto de ClickHouse. Los valores `Bool` y los enteros ordinarios también se escriben mediante las clases de almacenamiento nativas de SQLite. Los enteros anchos y los tipos complejos se escriben mediante la serialización de texto de ClickHouse. Los valores `NULL` se escriben como `NULL` de SQLite.

Cuando ClickHouse infiere un esquema a partir de una entrada SQLite, utiliza la misma correspondencia que el [motor de base de datos SQLite](/engines/database-engines/sqlite#data_types-support):

| Tipo declarado en SQLite | Tipo inferido en ClickHouse |
| - | - |
| El nombre del tipo contiene `INT` | `Int64` |
| `REAL`, `FLOAT`, `DOUBLE` | `Float64` |
| Otros tipos, incluidos `TEXT` y `BLOB` | `String` |

De forma predeterminada, ClickHouse envuelve el tipo inferido en `Nullable` si la columna de SQLite correspondiente admite `NULL`; las columnas `NOT NULL` se mantienen como no `Nullable`. Puede modificar este comportamiento con la configuración [`schema_inference_make_columns_nullable`](/es/reference/settings/formats/schema-inference#schema_inference_make_columns_nullable).

La inferencia de esquema no conserva los tipos de datos originales de ClickHouse. Por ejemplo, `Bool` se escribe como `INTEGER` de SQLite y se infiere como `Int64`, mientras que `Date`, `DateTime`, `Decimal`, `UUID`, `IPv4`, `IPv6`, `Enum`, `Array`, `Tuple` y `Map` se escriben como `TEXT` de SQLite y se infieren como `String`.

Cuando la estructura de la tabla de ClickHouse se especifica explícitamente, los valores de coma flotante se leen como valores `REAL` de SQLite, con recurso a texto para `NaN`. Los demás valores de SQLite se leen como texto y se convierten a los tipos de ClickHouse solicitados.

<h2 id="format-settings">
  Configuración de formato
</h2>

| Configuración | Descripción | Valor predeterminado |
| - | - | - |
| [`input_format_sqlite_table_name`](/es/reference/settings/formats/input-format#input_format_sqlite_table_name) | Nombre de la tabla que se leerá de la entrada SQLite. Si está vacío, se usa la primera tabla. | `''` |
| [`output_format_sqlite_table_name`](/es/reference/settings/formats/output-format#output_format_sqlite_table_name) | Nombre de la tabla en la salida SQLite. | `'table'` |
