複製一個使用 Iceberg 的管理資料表

你可以使用 DEEP CLONE 建立使用 Iceberg 的受控資料表完整且獨立的副本。 深度克隆會在 Unity Catalog 中使用 Iceberg,將資料檔案和資料表中繼資料複製到新的受控資料表。

使用 Iceberg 的管理資料表只支援深度克隆。 不支援淺層克隆及克隆過程中的格式轉換。

Iceberg 資料表的複製方法

你使用的複製操作取決於你的來源表和目標表類型:

來源 Target 行動
使用 Iceberg 管理的表格 使用 Iceberg 管理的表格 DEEP CLONE。
外國冰山 使用 Iceberg 管理的表格 DEEP CLONE。 參見「 將外來 Iceberg 資料表複製到使用 Iceberg 的管理資料表」。
外來冰山 管理或外部三角洲湖 增量複製。 請參閱 以增量方式將 Parquet 和 Apache Iceberg 數據表複製到 Delta Lake。

若要使用 Iceberg 從查詢結果建立受管理資料表,而非複製現有資料表,請使用 CREATE TABLE ... AS SELECT。 請參閱 CREATE TABLE [USING]。

SHALLOW CLONE 不支援 Iceberg 表格。 請參閱限制。

要求

要使用 Iceberg 深度複製管理資料表,你需要:

  • Databricks Runtime 16.4 LTS 或更高版本。
  • 來源資料表上的 SELECT 權限。
  • 如果要替換現有資料表,則 CREATE TABLE 是目標結構上的權限,或 MODIFY 目標資料表上的權限。
  • 已對目標目錄或結構描述啟用預測優化。

使用 Iceberg 深層複製受管理資料表

使用 Iceberg 的 CREATE TABLE ... DEEP CLONE 複製受管理資料表:

CREATE TABLE <catalog>.<schema>.<target-table>
DEEP CLONE <catalog>.<schema>.<source-table>;

若要取代現有的目標資料表:

CREATE OR REPLACE TABLE <catalog>.<schema>.<target-table>
DEEP CLONE <catalog>.<schema>.<source-table>;

僅在目標尚不存在時建立:

CREATE TABLE IF NOT EXISTS <catalog>.<schema>.<target-table>
DEEP CLONE <catalog>.<schema>.<source-table>;

完整 CREATE TABLE CLONE 語法請參見 CREATE TABLE CLONE。

存檔生產表

為了存檔或合規目的,建立獨立的生產資料表快照:

CREATE TABLE prod_catalog.archive.orders_snapshot_may2026
DEEP CLONE prod_catalog.main.orders;

將資料表複製到開發環境

若要將生產表複製到開發目錄以安全實驗,且不影響生產資料:

CREATE OR REPLACE TABLE dev_catalog.test.orders
DEEP CLONE prod_catalog.main.orders;

將 Iceberg 外部資料表複製為使用 Iceberg 的受管理資料表

你可以使用 DEEP CLONE,將外部 Iceberg 資料表遷移至 Unity Catalog,並作為使用 Iceberg 的受管理資料表。 克隆會將所有資料和元資料複製到 Unity 目錄儲存。 外部目錄管理的原始檔案不會重複使用。

CREATE TABLE <uc-catalog>.<schema>.<target-table>
DEEP CLONE <foreign-catalog>.<schema>.<source-table>;

複製完成後,目標資料表會成為在 Unity Catalog 中使用 Iceberg 的完全受控資料表,且獨立於來源 Catalog。

備註

不支援從外國目錄進行零拷貝遷移。 請參閱限制。

在深層複本上設定表格屬性

你無法在 DEEP CLONE 陳述式中設定 Iceberg 資料表屬性。 若要在複製表上新增或覆寫屬性,請在複製完成後使用 ALTER TABLE SET TBLPROPERTIES 。

例如,要設定自訂屬性以記錄用作快照的克隆來源:

CREATE TABLE prod_catalog.archive.orders_snapshot
DEEP CLONE prod_catalog.main.orders;

ALTER TABLE prod_catalog.archive.orders_snapshot
SET TBLPROPERTIES (
  'archive.source' = 'prod_catalog.main.orders',
  'archive.created_date' = '2026-05-11'
);

複製人行為

深度複製行為的重要考量:

  • 深度克隆是來源資料表的完整且獨立的副本。 對克隆的變更不會影響來源,對來源的變更也不會影響克隆。
  • 深層複製具有獨立的快照歷史。 在複本上進行時間旅行時,使用的是複本的歷史,而不是來源的歷史。
  • 綱要、分割區資訊和資料表屬性都會一併複製到深層複製副本中。 Unity 目錄標籤不會被複製。
  • 建立後,Unity Catalog 會獨立管理複製品並進行預測優化。

限制

  • 使用 Iceberg 的受管理資料表不支援淺層複製。
  • Unity Catalog 不支援將外國 Iceberg 資料表零複製轉換成使用 Iceberg 管理的資料表。 您必須使用 DEEP CLONE。 所有資料在複製操作期間都會被複製到 Unity 目錄儲存。
  • 深度複製不會複製資料表歷史,這會影響時間旅行查詢。
  • 複製時無法更改表格格式。 目標永遠是使用 Iceberg 管理的表格。
  • 複製過程中無法設定表格屬性。 深度複製完成後使用 ALTER TABLE SET TBLPROPERTIES 。 參見 在深層複製上設定資料表屬性。