该引擎支持将数据导入到 SQLite 和从 SQLite 导出数据,也支持直接从 ClickHouse 查询 SQLite 表。
创建表
CREATE TABLE [IF NOT EXISTS] [db.]table_name
(
name1 [type1],
name2 [type2], ...
) ENGINE = SQLite('db_path', 'table')引擎参数
db_path— SQLite 数据库文件的路径。table— SQLite 数据库中的表名,或原样传递给 SQLite 的查询 (请参见传递查询而非表名) 。
传递查询而非表名
table 参数不一定非得是表名,也可以是一个原样传递给 SQLite 的 SELECT 查询。表的结构将根据查询结果自动推断。该查询既可以写成子查询,也可以封装在 query 函数中:
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'));这样的表是只读的:不允许向其中执行 INSERT。sqlite 表函数也支持相同的语法。
数据类型支持
当在表定义中显式指定 ClickHouse 列类型时,可从 SQLite 的 TEXT 列中解析出以下 ClickHouse 类型:
- Date, Date32
- DateTime, DateTime64
- UUID
- Enum8, Enum16
- Decimal32, Decimal64, Decimal128, Decimal256
- FixedString
- 所有整数类型 (UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64)
- Float32, Float64
有关默认类型映射,请参见 SQLite database engine。
使用示例
显示创建 SQLite 表的查询:
SHOW CREATE TABLE sqlite_db.table2;CREATE TABLE SQLite.table2
(
`col1` Nullable(Int32),
`col2` Nullable(String)
)
ENGINE = SQLite('sqlite.db','table2');返回该表中的数据:
SELECT * FROM sqlite_db.table2 ORDER BY col1;┌─col1─┬─col2──┐
│ 1 │ text1 │
│ 2 │ text2 │
│ 3 │ text3 │
└──────┴───────┘另请参见