複製受管理的 Iceberg 資料表

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

受管理的 Iceberg 表格僅支援深度克隆。 不支援淺層克隆及克隆過程中的格式轉換。

Iceberg 資料表的複製方法

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

來源 Target 行動
管理型冰山 管理型冰山 DEEP CLONE
外國冰山 管理型冰山 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 資料表

CREATE TABLE ... DEEP CLONE 來複製一個受管理的 Iceberg 資料表:

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 目錄中完全管理的 Iceberg 資料表,獨立於原始目錄。

備註

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

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

你無法在 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 。 參見 在深層複製上設定資料表屬性