CREATE TABLE CLONE

Aplica-se a:Sim marcado Databricks SQL Sim marcado Databricks Runtime

Clona uma tabela de origem Delta, gerida pelo Apache Iceberg ou Apache Parquet, para um local de destino numa versão específica. A clonagem pode ser profunda ou superficial: clones profundos copiam os dados, enquanto clones superficiais fazem referência aos dados de origem sem copiá-los.

  • As tabelas Delta, Parquet e Iceberg Estrangeiro suportam clonagem profunda e superficial.
  • As tabelas Iceberg gerenciadas suportam apenas clonagem profunda e você não pode alterar o formato da tabela durante a clonagem.

Para obter mais informações, consulte Clonar incrementalmente tabelas Parquet e Apache Iceberg para Delta Lake.

No Databricks SQL e no Databricks Runtime 13.3 LTS ou superior, pode-se usar clones superficiais com tabelas geridas pelo Unity Catalog. No Databricks Runtime 12.2 LTS e inferior, não há suporte para clones superficiais no Unity Catalog. Consulte clonagem superficial para tabelas do Unity Catalog.

Importante

Existem diferenças importantes entre clones superficiais e profundos que podem determinar a melhor forma de usá-los. Ver Clonar uma tabela no Azure Databricks.

Note

Tabelas de streaming e vistas materializadas não são suportadas como tabelas de origem ou destino para CLONE. Veja limitações de tabelas de streaming e limitações de visualização materializada.

Sintaxe

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]

Parâmetros

  • SE NÃO EXISTIR

    Se especificado, a instrução será ignorada se table_name já existir.

  • [CRIAR OU] SUBSTITUIR

    Se CREATE OR for especificado, a tabela será substituída se existir e recém-criada se não existir. Sem CREATE OR, deve existir o table_name.

  • table_name

    O nome da tabela a ser criada. O nome não deve incluir uma especificação temporal ou uma especificação de opções. Se o nome não estiver qualificado, a tabela será criada no esquema atual. table_name não deve existir já, a menos que REPLACE ou IF NOT EXISTS tenha sido especificado.

  • CLONE SUPERFICIAL ou CLONE PROFUNDO

    Se você especificar SHALLOW CLONE o Azure Databricks, fará uma cópia da definição da tabela de origem, mas fará referência aos arquivos da tabela de origem. Quando você especificar DEEP CLONE (padrão) o Azure Databricks fará uma cópia completa e independente da tabela de origem.

    As tabelas Iceberg gerenciadas suportam apenas clonagem profunda, não clonagem superficial.

  • source_table_name

    O nome da tabela a ser clonada. O nome pode incluir uma especificação temporal ou uma especificação de opções.

  • TBLPROPERTIES

    Opcionalmente, define uma ou mais propriedades definidas pelo usuário.

  • Caminho de LOCALIZAÇÃO

    Opcionalmente, cria uma tabela externa, com o local fornecido como o caminho onde os dados são armazenados. Se table_name em si for um caminho em vez de um identificador de tabela, a operação falhará. path deve ser um literal cadeia de caracteres.

Exemplos

Clone profundo e clone superficial numa tabela Delta Lake:

-- Deep clone: copies data and metadata
CREATE TABLE target_catalog.target_schema.target_table
DEEP CLONE source_catalog.source_schema.source_table;

-- Shallow clone: copies metadata only, references source data files
CREATE TABLE target_catalog.target_schema.target_table
SHALLOW CLONE source_catalog.source_schema.source_table;

Clone profundamente uma tabela Iceberg gerida (apenas é suportada a clonagem profunda):

CREATE TABLE target_catalog.target_schema.target_table
DEEP CLONE source_catalog.source_schema.source_table;

Para mais exemplos de clones de Delta Lake, incluindo arquivamento de dados e fluxos de trabalho de ML, veja Clone a table on Azure Databricks. Para mais exemplos de clones de Iceberg geridos, veja Clone a managed Iceberg table.

Limitations

  • No Unity Catalog, não podes usar CREATE OR REPLACE para sobrescrever um clone superficial existente. Use DROP TABLE seguido de CREATE TABLE, ou use um novo nome de tabela. Consulte Limitações.