DuckDB and Apache Iceberg: OLake Go guides
DuckDB attaches Iceberg REST (representational state transfer) catalogs from a single process. It is a quick way to query the tables OLake Go writes.
Short answer. To query a replicated database in DuckDB, run OLake Go with an Iceberg REST catalog such as Polaris, Lakekeeper, Unity Catalog or Horizon, or with AWS Glue. Then attach that catalog in DuckDB with the iceberg extension. Add DuckDB as a target query engine and OLake Go writes positional deletes, which DuckDB reads.
Key takeaways
- DuckDB attaches Iceberg REST catalogs, and AWS Glue, from a single process with the iceberg extension.
- With DuckDB as a target query engine, OLake Go writes positional deletes, which DuckDB reads.
- Two guides end in DuckDB, such as Postgres to DuckDB, and many more use it as the cross-check reader.
Last reviewed October 2026.
How OLake Go gets data into DuckDB
OLake Go uses change data capture (CDC) where the source has it. It commits Iceberg tables to the catalog. DuckDB reads Polaris, Lakekeeper and the vendor REST catalogs, and Glue through its own endpoint type.
Two guides end in DuckDB, and many more use it as the cross-check reader. The MySQL query engines post compares DuckDB with other readers.
When to use it
- You want to inspect replicated tables from a laptop or a notebook.
- The catalog speaks the Iceberg REST protocol.
When not to use it
- The catalog is Hive Metastore or JDBC. DuckDB attaches REST catalogs only.
- DuckDB is the main reader and the job uses equality deletes. The DuckDB docs do not cover equality delete reads, so prefer positional deletes.
Catalogs DuckDB reads
| Catalog | DuckDB reads | How |
|---|---|---|
| AWS Glue | Yes | ATTACH with ENDPOINT_TYPE glue (needs Lake Formation grants) |
| Apache Polaris | Yes | ATTACH to the REST endpoint |
| Lakekeeper | Yes | ATTACH to the REST endpoint |
| Snowflake Horizon | Yes | ATTACH to the Horizon REST endpoint with a Snowflake token |
| Unity Catalog | Yes | ATTACH to the Unity REST endpoint (AWS-hosted workspaces) |
| BigLake (Google Cloud Lakehouse) | Yes | ATTACH with a Google access token |
| Amazon S3 Tables | Yes | ATTACH with ENDPOINT_TYPE s3_tables |
| Hive Metastore | No | DuckDB attaches REST catalogs only |
| JDBC | No | DuckDB attaches REST catalogs only |
Delete formats DuckDB reads
| Equality deletes (v2) | Positional deletes (v2) | Deletion vectors (v3) |
|---|---|---|
| Partial | Yes | Yes |
DuckDB reads positional deletes and, since duckdb-iceberg 1.5.3, deletion vectors. Equality delete reads are undocumented; they returned correct rows on the runs on this site (duckdb-iceberg 1.5.x, checked 2026-10-29), but prefer positional deletes when DuckDB is the main reader. Set DuckDB as a target query engine on the OLake Go job and OLake Go picks a format it reads; with DuckDB as the only reader that is positional deletes (v2).
Sources: DuckDB: Iceberg REST catalogs (checked 2026-10-12); DuckDB: new Iceberg features (v3 support) (checked 2026-10-12).
Tested guides for DuckDB
Guides where DuckDB reads the same tables
These pages show DuckDB reading the same tables through the same catalog, in their cross-engine section. No second copy of the data is made.
- Postgres to Snowflake
- MySQL to Snowflake
- MongoDB to Snowflake
- Oracle to Snowflake
- SQL Server to Snowflake
- DB2 to Snowflake
- MariaDB to Snowflake
- Kafka to Snowflake
- S3 to Snowflake
- Postgres to ClickHouse
- MySQL to ClickHouse
- MongoDB to ClickHouse
- SQL Server to ClickHouse
- DB2 to ClickHouse
- Postgres to BigQuery
- Oracle to BigQuery
- MongoDB to BigQuery
- MySQL to BigQuery
- Kafka to BigQuery
- MariaDB to BigQuery
- S3 to BigQuery
- DB2 to BigQuery
- SQL Server to BigQuery
- Postgres to Amazon Redshift
- Oracle to Amazon Redshift
- Kafka to Amazon Redshift
- MySQL to Amazon Redshift
- MongoDB to Amazon Redshift
- MariaDB to Amazon Redshift
- S3 to Amazon Redshift
- SQL Server to Amazon Redshift
- DB2 to Amazon Redshift
- Postgres to Databricks
- MySQL to Databricks
- MariaDB to Databricks
- MongoDB to Databricks
- Oracle to Databricks
- SQL Server to Databricks
- Kafka to Databricks
- S3 to Databricks
- Postgres to Apache Iceberg
- MySQL to Apache Iceberg
- MongoDB to Apache Iceberg
- Oracle to Apache Iceberg
- SQL Server to Apache Iceberg
- Kafka to Apache Iceberg
- Kafka to ClickHouse
Frequently asked questions
Does DuckDB read Iceberg deletion vectors?
Yes, since duckdb-iceberg 1.5.3.
Does DuckDB read equality deletes?
The DuckDB docs do not list it. On the runs on this site they returned correct rows with duckdb-iceberg 1.5.x, checked 2026-10-29, but positional deletes are the safer choice.
How does DuckDB attach AWS Glue?
With ATTACH and ENDPOINT_TYPE glue. The reader also needs Lake Formation grants.