このエンジンでは、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 データベースエンジン を参照してください。
使用例
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 │
└──────┴───────┘関連項目