본문으로 바로가기
본문으로 바로가기

SQLite

SQLite 데이터베이스에 연결하고 INSERTSELECT 쿼리를 실행하여 ClickHouse와 SQLite 간에 데이터를 교환합니다.

데이터베이스 생성

    CREATE DATABASE sqlite_database
    ENGINE = SQLite('db_path')

엔진 파라미터

  • db_path — SQLite 데이터베이스 파일의 경로입니다.

데이터 타입 지원

아래 표는 ClickHouse가 SQLite에서 스키마를 자동으로 추론할 때 사용하는 기본 타입 매핑을 보여줍니다:

SQLiteClickHouse
INTEGERInt32
REALFloat32
TEXTString
TEXTUUID
BLOBString

SQLite table engine을 사용하여 특정 ClickHouse 타입으로 테이블을 명시적으로 정의하는 경우, 다음 ClickHouse 타입들을 SQLite TEXT 컬럼에서 파싱할 수 있습니다:

SQLite는 동적 타입을 사용하며, 타입 접근 함수들은 자동 형 변환(automatic type coercion)을 수행합니다. 예를 들어, TEXT 컬럼을 정수로 읽을 때 해당 텍스트를 숫자로 파싱할 수 없으면 0을 반환합니다. 이는 ClickHouse 테이블이 기본 SQLite 컬럼과 다른 타입으로 정의되어 있는 경우, 오류를 발생시키지 않고 값이 조용히 다른 타입으로 강제 변환될 수 있음을 의미합니다.

세부 사항 및 권장 사항

SQLite는 전체 데이터베이스(정의, 테이블, 인덱스 및 데이터 자체)를 호스트 머신의 단일 크로스플랫폼 파일 하나에 저장합니다. 쓰기 작업 중에는 SQLite가 전체 데이터베이스 파일을 잠그므로 쓰기 작업은 순차적으로 수행됩니다. 읽기 작업은 여러 작업을 동시에 수행할 수 있습니다. SQLite는 서비스 관리(예: startup 스크립트)나 GRANT 및 비밀번호를 기반으로 한 액세스 제어를 필요로 하지 않습니다. 액세스 제어는 데이터베이스 파일 자체에 부여된 파일 시스템 권한을 통해 처리됩니다.

사용 예시

SQLite에 연결된 ClickHouse 데이터베이스:

CREATE DATABASE sqlite_db ENGINE = SQLite('sqlite.db');
SHOW TABLES FROM sqlite_db;
┌──name───┐
│ table1  │
│ table2  │
└─────────┘

테이블 목록을 표시합니다:

SELECT * FROM sqlite_db.table1;
┌─col1──┬─col2─┐
│ line1 │    1 │
│ line2 │    2 │
│ line3 │    3 │
└───────┴──────┘

ClickHouse 테이블의 데이터를 SQLite 테이블에 삽입하기:

CREATE TABLE clickhouse_table(`col1` String,`col2` Int16) ENGINE = MergeTree() ORDER BY col2;
INSERT INTO clickhouse_table VALUES ('text',10);
INSERT INTO sqlite_db.table1 SELECT * FROM clickhouse_table;
SELECT * FROM sqlite_db.table1;
┌─col1──┬─col2─┐
│ line1 │    1 │
│ line2 │    2 │
│ line3 │    3 │
│ text  │   10 │
└───────┴──────┘