CREATE TABLE CLONE(创建表克隆)

适用于:勾选“是” Databricks SQL 勾选“是” Databricks Runtime

将源 Delta 表、托管的 Apache Iceberg 表或 Apache Parquet 表克隆到一个特定版本的目标位置。 克隆可以是深度或浅层:深层克隆复制数据,而浅克隆则引用源数据而不复制它。

  • DeltaParquetForeign Iceberg 表支持深克隆和浅克隆。
  • 托管 的 Iceberg 表仅支持深度克隆,并且无法在克隆期间更改表格式。

有关详细信息,请参阅将 Parquet 和 Apache Iceberg 表以增量方式克隆到 Delta Lake

在 Databricks SQL 和 Databricks Runtime 13.3 LTS 及更高版本中,可以对 Unity Catalog 托管表使用浅表克隆。 在 Databricks Runtime 12.2 LTS 及更低版本中,Unity Catalog 不支持浅表克隆。 请参阅适用于 Unity Catalog 表的浅表克隆

重要

浅表克隆和深层克隆之间存在重要差异,这也决定了如何更好地使用它们。 请参阅克隆 Azure Databricks 上的表

语法

CREATE TABLE [IF NOT EXISTS] table_name
   [SHALLOW | DEEP] CLONE source_table_name [TBLPROPERTIES clause] [LOCATION path]
[CREATE OR] REPLACE TABLE table_name
   [SHALLOW | DEEP] CLONE source_table_name [TBLPROPERTIES clause] [LOCATION path]

parameters

  • 如果不存在

    如果已指定,则忽略语句(如果已存在 table_name)。

  • [创建或] 替换

    如果已指定 CREATE OR,则替换表(如果存在)和新建表(如果不存在)。 在没有 CREATE OR 的情况下,table_name 必须存在。

  • table_name

    要创建的表的名称。 名称不得包含时态规范或选项规范。 如果未限定该名称,则会在当前架构中创建该表。 不得存在 table_name,除非已指定 REPLACEIF NOT EXISTS

  • SHALLOW CLONEDEEP CLONE

    如果指定 SHALLOW CLONE,Azure Databricks 将复制源表的定义,但引用源表的文件。 如果指定 DEEP CLONE(默认),Azure Databricks 将创建源表的完整独立副本。

    托管 Iceberg 表仅支持深度克隆,不支持浅克隆。

  • source_table_name

    要克隆的表的名称。 名称可能包含时态规范或选项规范

  • TBLPROPERTIES

    (可选)设置一个或多个用户定义的属性。

  • LOCATION 路径

    (可选)创建一个外部表,并将所提供的位置作为存储数据的路径。 如果 table_name 本身是路径而不是表标识符,则作将失败。 path 必须是字符串字面量。

示例

可以使用 CREATE TABLE CLONE 执行复杂的操作,例如数据迁移、数据存档、机器学习流复现、短期试验和数据共享。 请参阅克隆 Azure Databricks 上的表