Skip to main content
For an overview of querying, tuning, and exporting Iceberg tables, see the Iceberg guide. Creates an Iceberg database that mounts an external Iceberg catalog. Once created, you can query every table the catalog exposes using a fully qualified three-part name, without registering each table individually with CREATE ICEBERG TABLE. An Iceberg database stores only a pointer to an Iceberg LOCATION and a freshness setting. Each query resolves the table against the upstream catalog at run time, so any table added to the catalog becomes visible on the next query.

Syntax

Parameters

Supported catalog types

CREATE ICEBERG DATABASE works with any Iceberg LOCATION object that targets one of the following catalog types:
  • FILE_BASED
  • REST
  • SNOWFLAKE_OPEN_CATALOG
  • DATABRICKS_UNITY
  • AWS_GLUE
  • S3_TABLES Nightly Feature
Supported vendor catalogs without a dedicated keyword use one of these types. For example, Snowflake Horizon Catalog uses REST.

Name resolution

A fully qualified table name has three parts: <database>.<schema>.<table>.
  • <database> is the Iceberg database created with CREATE ICEBERG DATABASE.
  • <schema> maps to the upstream Iceberg namespace.
  • <table> maps to the Iceberg table within that namespace.

Example (REST catalog)

For how to create an Iceberg database backed by a FILE_BASED, DATABRICKS_UNITY (as syntactic sugar on top of REST), SNOWFLAKE_OPEN_CATALOG (a REST-shaped catalog), AWS_GLUE, or S3_TABLES location, see CREATE LOCATION (Iceberg).

Limitations

  • The LOCATION must be warehouse-/catalog-scoped. A LOCATION that pins NAMESPACE (REST, SNOWFLAKE_OPEN_CATALOG, S3_TABLES), SCHEMA (DATABRICKS_UNITY), DATABASE (AWS_GLUE), or TABLE fails at CREATE ICEBERG DATABASE time.
  • Tables in a mounted database are resolved on demand by name. SHOW TABLES and information_schema.tables do not list them.

See also