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