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

> Permite realizar consultas sobre datos almacenados en una base de datos SQLite.

# sqlite

Permite realizar consultas sobre datos almacenados en una base de datos [SQLite](/docs/es/reference/engines/database-engines/sqlite).

<div id="syntax">
  ## Sintaxis
</div>

```sql theme={null}
sqlite('db_path', 'table_name')
```

<div id="arguments">
  ## Argumentos
</div>

* `db_path` — Ruta de acceso a un archivo con una base de datos SQLite. [String](/docs/es/reference/data-types/string).
* `table_name` — Nombre de una tabla en la base de datos SQLite, o una consulta que se pasa a SQLite tal cual (consulta [Pasar una consulta en lugar de un nombre de tabla](#passing-a-query)). [String](/docs/es/reference/data-types/string).

<div id="returned_value">
  ## Valor devuelto
</div>

* Un objeto de tipo tabla con las mismas columnas que la tabla original de `SQLite`.

<div id="passing-a-query">
  ## Pasar una consulta en lugar de un nombre de tabla
</div>

En lugar de un nombre de tabla, el segundo argumento puede ser una consulta `SELECT` que se pasa a SQLite tal cual. La estructura de la tabla resultante se infiere a partir del resultado de la consulta. La consulta puede escribirse como una subconsulta o bien envolverse en la función `query`:

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

Esa tabla es de solo lectura: no se permite hacer `INSERT` en ella. El motor de tabla [`SQLite`](/docs/es/reference/engines/table-engines/integrations/sqlite) también admite la misma sintaxis.

<Note>
  La forma de subconsulta `(SELECT ...)` la analiza ClickHouse y vuelve a serializarla antes de enviarla a SQLite. Por lo tanto, debe ser SQL de ClickHouse válido. Para pasar sintaxis específica de SQLite que ClickHouse no analiza, use la forma `query('...')`, cuyo texto se envía a SQLite literalmente.

  Cualquier `WHERE`, `LIMIT`, agregación, etc. externo de la consulta de ClickHouse que la rodea **no** hace pushdown en la consulta pasada; se aplica en ClickHouse después de recuperar el resultado completo de la consulta. Para restringir los datos leídos desde SQLite, coloque el filtro dentro de la consulta pasada. Con [`external_table_strict_query = 1`](/docs/es/reference/settings/session-settings#external_table_strict_query), un filtro externo sobre el que no se puede hacer pushdown se rechaza con una excepción, en lugar de aplicarse localmente.
</Note>

<div id="example">
  ## Ejemplo
</div>

```sql title="Query" theme={null}
SELECT * FROM sqlite('sqlite.db', 'table1') ORDER BY col2;
```

```text title="Response" theme={null}
┌─col1──┬─col2─┐
│ line1 │    1 │
│ line2 │    2 │
│ line3 │    3 │
└───────┴──────┘
```

<div id="related">
  ## Relacionado
</div>

* [Motor de tabla de SQLite](/docs/es/reference/engines/table-engines/integrations/sqlite)
* [Motor de base de datos SQLite](/docs/es/reference/engines/database-engines/sqlite) — sección sobre compatibilidad con tipos de datos
