- Offloading to long-term storage - Data arrives in ClickHouse as a real-time analytics layer, powering dashboards and operational reporting. Once the data ages beyond its real-time window, it can be written out to Iceberg in object storage for durable, cost-effective retention in an interoperable format.
- Reverse ETL - Transformations, aggregations, and enrichment performed inside ClickHouse produce derived datasets that downstream tools and other teams need to consume. Writing these results to Iceberg tables makes them available across the broader data ecosystem.
INSERT INTO SELECT lets you move data from ClickHouse tables into Iceberg tables stored in object storage.
Writing to open table formats is currently supported for Iceberg tables only. Partial support for Delta Lake tables is under development. Tables must not be managed by a catalog.
Prepare a source dataset
For this guide, we’ll use the UK Price Paid dataset - a public record of every residential property transaction in England and Wales.Create and populate a MergeTree table
Write data to an Iceberg table
Create the Iceberg table
For direct reads from an existing Iceberg table, we recommend theicebergS3 table function. This guide demonstrates creating and populating standalone Iceberg tables, so it uses the IcebergS3 table engine with an explicit schema. The example S3 locations already contain the completed tables; to run the CREATE and INSERT statements, replace both locations with empty, writable S3 prefixes and credentials you control.
Note that the schema must be simplified compared to the MergeTree source. ClickHouse supports a richer type system than Iceberg and the underlying Parquet files - types such as Enum, LowCardinality, and UInt8 are not supported in Iceberg and must be mapped to compatible types.
Insert a subset of data
UseINSERT INTO SELECT to write data from the MergeTree table into the Iceberg table. In this example, we write only London transactions:
This example requires the allow_insert_into_iceberg setting. See the support matrix for current maturity and limitations.