Permet de se connecter à une base de données SQLite et d’exécuter des requêtes INSERT et SELECT pour échanger des données entre ClickHouse et SQLite.
Création d’une base de données
CREATE DATABASE sqlite_database
ENGINE = SQLite('db_path')
Paramètres du moteur
db_path — Chemin d’accès à un fichier contenant une base de données SQLite.
Prise en charge des types de données
Le tableau ci-dessous montre la correspondance de types par défaut lorsque ClickHouse déduit automatiquement le schéma depuis SQLite :
| SQLite | ClickHouse |
|---|
| INTEGER | Int32 |
| REAL | Float32 |
| TEXT | String |
| TEXT | UUID |
| BLOB | String |
Lorsque vous définissez explicitement une table avec des types ClickHouse spécifiques à l’aide du moteur de table SQLite, les types ClickHouse suivants peuvent être interprétés à partir de colonnes SQLite de type TEXT :
- Date, Date32
- DateTime, DateTime64
- UUID
- Enum8, Enum16
- Decimal32, Decimal64, Decimal128, Decimal256
- FixedString
- Tous les types entiers (UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64)
- Float32, Float64
SQLite utilise un typage dynamique, et ses fonctions d’accès aux types effectuent automatiquement une coercition de type. Par exemple, la lecture d’une colonne TEXT comme un entier renverra 0 si le texte ne peut pas être interprété comme un nombre. Cela signifie que si une table ClickHouse est définie avec un type différent de celui de la colonne SQLite sous-jacente, les valeurs peuvent être converties silencieusement au lieu de générer une erreur.
Spécificités et recommandations
SQLite stocke l’ensemble de la base de données (définitions, tables, index et données proprement dites) dans un seul fichier multiplateforme sur la machine hôte. Lors de l’écriture, SQLite verrouille l’intégralité du fichier de base de données ; par conséquent, les opérations d’écriture sont effectuées de manière séquentielle. Les opérations de lecture peuvent être effectuées en parallèle.
SQLite ne nécessite pas de gestion de service (comme des scripts de démarrage) ni de contrôle d’accès via GRANT et des mots de passe. Le contrôle d’accès est assuré au moyen des permissions du système de fichiers accordées au fichier de base de données lui-même.
Base de données dans ClickHouse, connectée à SQLite :
CREATE DATABASE sqlite_db ENGINE = SQLite('sqlite.db');
SHOW TABLES FROM sqlite_db;
┌──name───┐
│ table1 │
│ table2 │
└─────────┘
Affiche les tables :
SELECT * FROM sqlite_db.table1;
┌─col1──┬─col2─┐
│ line1 │ 1 │
│ line2 │ 2 │
│ line3 │ 3 │
└───────┴──────┘
Insertion de données d’une table ClickHouse dans une table 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 │
└───────┴──────┘
Dernière modification le 25 juin 2026