diff --git a/src/content/docs/r2/data-catalog/config-examples/duckdb.mdx b/src/content/docs/r2/data-catalog/config-examples/duckdb.mdx new file mode 100644 index 000000000000000..7a4d76b14f23034 --- /dev/null +++ b/src/content/docs/r2/data-catalog/config-examples/duckdb.mdx @@ -0,0 +1,42 @@ +--- +title: DuckDB +pcx_content_type: example +--- + +Below is an example of using [DuckDB](https://duckdb.org/) to connect to R2 Data Catalog (read-only). For more information on connecting to R2 Data Catalog with DuckDB, refer to [DuckDB documentation](https://duckdb.org/docs/stable/core_extensions/iceberg/iceberg_rest_catalogs#r2-catalog). + +## Prerequisites + +- Sign up for a [Cloudflare account](https://dash.cloudflare.com/sign-up/workers-and-pages). +- [Create an R2 bucket](/r2/buckets/create-buckets/) and [enable the data catalog](/r2/data-catalog/manage-catalogs/#enable-r2-data-catalog-on-a-bucket). +- [Create an R2 API token](/r2/api/tokens/) with both [R2 and data catalog permissions](/r2/api/tokens/#permissions). +- Install [DuckDB](https://duckdb.org/docs/installation/). + - Note: [DuckDB 1.3.0](https://github.com/duckdb/duckdb/releases/tag/v1.3.0) or greater is required to attach [Iceberg REST Catalogs](https://duckdb.org/docs/stable/core_extensions/iceberg/iceberg_rest_catalogs). + +## Example usage + +In the [DuckDB CLI](https://duckdb.org/docs/stable/clients/cli/overview.html) (Command Line Interface), run the following commands: + +```sql +-- Install the iceberg DuckDB extension (if you haven't already) and load the extension. +INSTALL iceberg; +LOAD iceberg; + +-- Create a DuckDB secret to store R2 Data Catalog credentials. +CREATE SECRET r2_secret ( + TYPE ICEBERG, + TOKEN '' +); + +-- Attach R2 Data Catalog with the following ATTACH statement (read-only). +ATTACH '' AS my_r2_catalog ( + TYPE ICEBERG, + ENDPOINT '' +); + +-- Show all available tables. +SHOW ALL TABLES; + +-- Query your Iceberg table. +SELECT * FROM my_r2_catalog.default.my_iceberg_table; +```