이 엔진은 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 │
└──────┴───────┘관련 항목