SQLite table engine
The engine allows to import and export data to SQLite and supports queries to SQLite tables directly from ClickHouse.
Creating a table
Engine Parameters
db_path— Path to SQLite file with a database.table— Name of a table in the SQLite database, or a query passed to SQLite as is (see Passing a query instead of a table name).
Passing a query instead of a table name
Instead of a table name, the table argument can be a SELECT query that is passed to SQLite as is. The structure of the table is inferred from the query result. The query can be written either as a subquery, or wrapped into the query function:
Such a table is read-only: INSERT into it is not allowed. The same syntax is supported by the sqlite table function.
The subquery form (SELECT ...) is parsed by ClickHouse and re-serialized before being sent to SQLite. It must therefore be valid ClickHouse SQL. To pass SQLite-specific syntax that ClickHouse does not parse, use the query('...') form, whose text is sent to SQLite verbatim.
Any outer WHERE, LIMIT, aggregation, etc. of the surrounding ClickHouse query is not pushed down into the passed query — it is applied in ClickHouse after the full query result is fetched. To restrict the data read from SQLite, put the filter inside the passed query. With external_table_strict_query = 1 an outer filter that cannot be pushed down is rejected with an exception instead of being applied locally.
Data types support
When you explicitly specify ClickHouse column types in the table definition, the following ClickHouse types can be parsed from SQLite TEXT columns:
- Date, Date32
- DateTime, DateTime64
- UUID
- Enum8, Enum16
- Decimal32, Decimal64, Decimal128, Decimal256
- FixedString
- All integer types (UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64)
- Float32, Float64
See SQLite database engine for the default type mapping.
Usage example
Shows a query creating the SQLite table:
Returns the data from the table:
See Also