Accueil
Générateur DDL JSON vers ClickHouse CREATE TABLE

Générateur DDL JSON vers ClickHouse CREATE TABLE

Convertissez des documents JSON en DDL SQL ClickHouse avec moteur MergeTree, types UInt/Int/Float/String/DateTime et mappage de colonnes Array/Nested.

✨ Modèles :
Document JSON / NDJSON en entréeARRAY
-- =================================================================
-- ClickHouse DDL Generated by ToolsAA (100% Client-Side Private)
-- Target Engine: MergeTree | Columns: 22
-- =================================================================

CREATE TABLE IF NOT EXISTS `default`.`analytics_events`
(
    `event_id`                   LowCardinality(String) COMMENT 'Sample: e8d1a6b0-9f12-4e9b-b234-918237465abc',
    `tenant_id`                  UInt16 CODEC(T64, ZSTD(1)) COMMENT 'Sample: 1042',
    `event_time`                 DateTime64(3, 'UTC') CODEC(DoubleDelta, ZSTD(1)) COMMENT 'Sample: 2026-10-17T04:15:30.452Z',
    `event_name`                 LowCardinality(String) COMMENT 'Sample: button_clicked',
    `session_id`                 LowCardinality(String) COMMENT 'Sample: sess_8492019a',
    `user_id`                    LowCardinality(String) COMMENT 'Sample: usr_998124',
    `page_url`                   LowCardinality(String) COMMENT 'Sample: https://toolsaa.com/tools/json-to-clickhouse',
    `referrer`                   LowCardinality(String) COMMENT 'Sample: https://google.com',
    `client_ip`                  IPv4 COMMENT 'Sample: 192.168.1.105',
    `user_agent`                 LowCardinality(String) COMMENT 'Sample: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)',
    `device_type`                LowCardinality(String) COMMENT 'Sample: desktop',
    `browser`                    LowCardinality(String) COMMENT 'Sample: Chrome',
    `country_code`               LowCardinality(String) COMMENT 'Sample: US',
    `duration_ms`                UInt16 CODEC(T64, ZSTD(1)) COMMENT 'Sample: 320',
    `is_logged_in`               Bool CODEC(T64, ZSTD(1)) COMMENT 'Sample: true',
    `tags`                       Array(String) CODEC(ZSTD(1)) COMMENT 'Sample: ["saas","developer-tools","conversion"]',
    `properties_button_id`       Nullable(String) CODEC(ZSTD(1)) COMMENT 'Sample: btn_generate_ddl',
    `properties_source_section`  Nullable(String) CODEC(ZSTD(1)) COMMENT 'Sample: hero_banner',
    `properties_ab_test_variant` Nullable(String) CODEC(ZSTD(1)) COMMENT 'Sample: v2_compact',
    `properties_file_extension`  Nullable(String) CODEC(ZSTD(1)) COMMENT 'Sample: json',
    `properties_file_size_bytes` Nullable(UInt16) CODEC(T64, ZSTD(1)) COMMENT 'Sample: 49200',
    `properties_record_count`    Nullable(UInt8) CODEC(T64, ZSTD(1)) COMMENT 'Sample: 150'
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(event_time)
ORDER BY (`tenant_id`, `event_name`, `event_time`, `event_id`)
SETTINGS index_granularity = 8192;
22 Colonnes inférées
4 Entiers • 0 Décimaux • 15 Chaînes • 1 Tableaux
MergeTree Moteur de table
PARTITION BY toYYYYMM(event_time)
Stockage colonnaire optimisé
Granularité d'index 8192 • ZSTD/LZ4

Générateur 100% Privé Côté Client

Aucun envoi serveur ni télémétrie. Vos données JSON, schémas internes et structures propriétaires restent strictement dans la mémoire de votre navigateur.

Inférence Native de Types ClickHouse

Inférence intelligente des types colonnaires pour UInt8-UInt64, Float32/Float64, DateTime64, LowCardinality(String), Arrays et tuples imbriqués.

DDL MergeTree & Pipelines de Production

Génère instantanément des instructions CREATE TABLE de production avec ORDER BY, PARTITION BY, expressions TTL et snippets d'ingestion CLI / HTTP.

Référence technique et guide d'architecture

Guide Développeur : Générateur de DDL CREATE TABLE JSON vers ClickHouse — Guide de référence

Convertissez des documents JSON en DDL SQL ClickHouse avec moteur MergeTree, types UInt/Int/Float/String/DateTime et mappage de colonnes Array/Nested.

Paramètres clés et contrôles

tableNamestring

Nom d'identifiant de la table ClickHouse cible à générer.

Par défaut : events
enginestring

Moteur de table ClickHouse déterminant la réplication, la déduplication et le stockage.

Par défaut : MergeTree()
orderBystring

Tuple de clés de tri définissant l'agencement physique sur disque et l'index primaire clairsemé (sparse index).

Par défaut : (id, created_at)
partitionBystring

Expression de clé de partitionnement pour découper chronologiquement les parties de données et accélérer les purges.

Par défaut : toYYYYMM(created_at)
useLowCardinalityboolean

Convertit automatiquement les chaînes répétitives et énumérations en LowCardinality(String) pour compression par dictionnaire.

Par défaut : true
nullableboolean

Encapsule les types inférés dans Nullable(T) si les champs contiennent des valeurs nulles, ou applique les valeurs zéro par défaut.

Par défaut : false

Conseils de pro et bonnes practices

ClickHouse stocke les colonnes

ClickHouse stocke les colonnes Nullable dans un fichier de masque null distinct (*.null), ce qui dégrade la vectorisation et la compression de 20 à 30 %. Préférez les valeurs sentinelles par défaut (chaîne vide, 0) sauf nécessité absolue.

Pour les chaînes contenant moins de 10

Pour les chaînes contenant moins de 10 000 valeurs distinctes (codes pays, types de navigateurs, verbes HTTP), LowCardinality(String) réduit drastiquement l'empreinte disque et accélère les GROUP BY.

Conception optimale de la clé ORDER BY

Maintenez la clause ORDER BY courte et ordonnée par sélectivité croissante (de la cardinalité la plus faible à la plus forte) pour maximiser le pruning d'index clairsemé lors des requêtes fréquentes.

Si votre JSON contient des timestamps

Si votre JSON contient des timestamps à la milliseconde ou microseconde (ISO 8601 fractionnaire), utilisez DateTime64(3, 'UTC') ou DateTime64(6, 'UTC') plutôt que le DateTime standard à 1 seconde.

Pièges courants et dépannage

Tableaux vides [] ou types hétérogènes causant une inférence ambiguë

Fournissez des objets JSON représentatifs avec des tableaux non vides ou des fichiers JSON Lines (NDJSON). Pour les types mixtes, ClickHouse requiert des types String ou Variant explicites.

Les colonnes de ORDER BY contiennent des types Nullable provoquant une erreur DDL

ClickHouse interdit strictement les types Nullable dans la PRIMARY KEY et ORDER BY des moteurs MergeTree. Assurez-vous que les colonnes de tri sont non-nullables.

Objets JSON imbriqués vs aplatissement des colonnes

ClickHouse prend en charge le type Nested ainsi que le type expérimental JSON. Pour les traitements analytiques à fort débit, l'aplatissement en colonnes avec notation pointée (ex. user_address_city) offre une compression et des performances supérieures.

Foire aux questions (FAQ)

Comment ce générateur mappe-t-il les types JSON vers les types ClickHouse ?▼

Les nombres sont analysés pour cibler des intervalles entiers précis (UInt8/16/32/64, Int32/64) ou Float64. Les chaînes ISO 8601 deviennent Date32, DateTime ou DateTime64. Les booléens sont typés en Bool, les listes en Array(T) et les objets en Tuple(...) ou Nested.

Pourquoi le moteur MergeTree est-il recommandé par défaut dans ClickHouse ?▼

MergeTree est le cœur analytique de ClickHouse. Il offre un partitionnement optimisé, des index primaires clairsemés, la fusion automatique des parts de données en arrière-plan et des agrégations vectorisées ultra-rapides sur des milliards de lignes.

Peut-on ingérer du JSON brut dans ClickHouse sans définir de schéma ?▼

Bien que le type expérimental Object('json') existe, les standards de production imposent un schéma CREATE TABLE explicite avec colonnes typées pour obtenir une compression 10x à 50x supérieure et des temps de requête constants.

Mon document JSON est-il transmis à des serveurs tiers lors de la conversion ?▼

Non. L'ensemble de l'inférence de schéma, de l'évaluation des types, de la génération d'AST et du formatage SQL s'effectue localement dans le moteur JavaScript de votre navigateur sans aucun transfert réseau.

Outils et utilitaires connexes

Tous les outils →
Guide Développeur : Générateur de Schéma de Table Google BigQuery depuis JSONDéveloppement

Déduisez et convertissez des objets JSON en schémas de table Google Cloud BigQuery au format JSON avec prise en charge des types RECORD, STRING, INTEGER, NUMERIC et TIMESTAMP.

Ouvrir l'outil→
Guide Développeur : Générateur de DDL CREATE TABLE JSON vers SnowflakeDéveloppement

Convertissez vos structures et charges utiles JSON en instructions SQL CREATE TABLE prêtes pour la production dans Snowflake avec des types de données optimisés tels que VARIANT, VARCHAR, NUMBER, BOOLEAN et TIMESTAMP_NTZ.

Ouvrir l'outil→
Guide Développeur : Générateur de Variables et Locals Terraform HCL depuis JSON / YAMLDéveloppement

Convertissez des structures JSON et YAML en contraintes de types HCL Terraform (type = object({...})), valeurs par défaut, blocs locals et fichiers terraform.tfvars.

Ouvrir l'outil→
Guide Développeur : Convertisseur OpenAPI / Swagger vers GraphQL SDLDéveloppement

Convertissez les points de terminaison REST, corps de requête et schémas JSON OpenAPI 3.0/3.1 et Swagger 2.0 en types, requêtes, mutations et entrées GraphQL SDL.

Ouvrir l'outil→
Guide développeur du générateur de schémas TypeScript TypeBox depuis SQL DDLDéveloppement

Convertissez les instructions SQL CREATE TABLE en schémas de validation à l'exécution @sinclair/typebox utilisant Type.Object, Type.String, Type.Number et Type.Optional.

Ouvrir l'outil→
Guide Développeur du Générateur de Code cURL vers Rust (reqwest & tokio)Développement

Convertissez des commandes cURL en requêtes HTTP asynchrones et idiomatiques en Rust à l'aide de reqwest, serde_json, d'en-têtes personnalisés et du runtime Tokio.

Ouvrir l'outil→