CREATE TABLE CLONE

适用于:Databricks SQL check marked yes Databricks Runtime

将源 Delta 表克隆到特定版本的目标位置。 克隆可以是深层克隆,也可以是浅表克隆:深层克隆会复制源中的数据,而浅表克隆则不复制。 还可以克隆源 Parquet 和 Iceberg 表。 请参阅将 Parquet 表和 Iceberg 表增量克隆到 Delta Lake

在 Databricks SQL 和 Databricks Runtime 13.1 及更高版本中,可以对 Unity Catalog 托管表使用浅表克隆。 在 Databricks Runtime 13.0 及更低版本中,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

  • IF NOT EXISTS

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

  • [CREATE OR] REPLACE

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

  • table_name

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

  • SHALLOW CLONEDEEP CLONE

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

  • source_table_name

    要克隆的 Delta Lake 表的名称。 该名称可能包含时态规范

  • TBLPROPERTIES

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

  • LOCATION path

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

示例

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