ALTER TABLE

Altera o esquema ou as propriedades de uma mesa.

Parâmetro do identificador de tabela

O parâmetro do identificador de tabela em todas as declarações tem a seguinte forma:

  • table_identifier
    • [database_name.] table_name: Nome de mesa, opcionalmente qualificado com nome de base de dados.
    • delta.<>de caminho a mesa: A localização de uma tabela Delta existente.

ADICIONAR COLUNAS

Adicione colunas a uma tabela existente.

Sintaxe

ALTER TABLE table_identifier ADD COLUMNS ( col_spec [ , ... ] )

Parâmetros

  • COLUNAS (col_spec)

    As colunas a serem adicionadas.

ADICIONAR E LARGAR PARTIÇÃO

ADICIONAR PARTIÇÃO

Adiciona uma divisória à mesa dividida.

Sintaxe

ALTER TABLE table_identifier ADD [IF NOT EXISTS]
    ( partition_spec [ partition_spec ... ] )

Parâmetros

  • partition_spec

    Partição a ser adicionada.

    Sintaxe:PARTITION ( partition_col_name = partition_col_val [ , ... ] )

DEIXAR CAIR A PARTIÇÃO

Deixa cair a divisória da mesa.

Sintaxe

ALTER TABLE table_identifier DROP [ IF EXISTS ] partition_spec [PURGE]

Parâmetros

  • partition_spec

    Partição a ser largada.

    Sintaxe:PARTITION ( partition_col_name = partition_col_val [ , ... ] )

RENOMEAR PARA

Altera o nome de uma tabela existente na base de dados.

Sintaxe

ALTER TABLE table_identifier RENAME TO table_identifier

ALTER TABLE table_identifier partition_spec RENAME TO partition_spec

Parâmetros

  • partition_spec

    Partição a ser renomeada.

    Sintaxe:PARTITION ( partition_col_name = partition_col_val [ , ... ] )

CONJUNTO E DESCAMOSO

DEFINIR PROPRIEDADES DE TABELA

Coloque e desesta propriedades da mesa. Se uma propriedade já foi definida, sobrepõe-se ao valor antigo com o novo.

Syntax

-- Set Table Properties
ALTER TABLE table_identifier SET TBLPROPERTIES ( key1 = val1, key2 = val2, ... )

-- Unset Table Properties
ALTER TABLE table_identifier UNSET TBLPROPERTIES [ IF EXISTS ] ( key1, key2, ... )

DEFINIR SERDE

Define as SERDE propriedades ou propriedades em SERDE mesas de colmeia. Se uma propriedade já foi definida, sobrepõe-se ao valor antigo com o novo.

Syntax

-- Set SERDE Properties
ALTER TABLE table_identifier [ partition_spec ]
    SET SERDEPROPERTIES ( key1 = val1, key2 = val2, ... )

ALTER TABLE table_identifier [ partition_spec ] SET SERDE serde_class_name
    [ WITH SERDEPROPERTIES ( key1 = val1, key2 = val2, ... ) ]

LOCALIZAÇÃO DEFINIDA E FORMATO DE FICHEIRO DEFINIDO

Define a localização do ficheiro e o formato de ficheiro para as tabelas existentes.

Sintaxe

-- Changing File Format
ALTER TABLE table_identifier [ partition_spec ] SET FILEFORMAT file_format

-- Changing File Location
ALTER TABLE table_identifier [ partition_spec ] SET LOCATION 'new_location'

Parâmetros

  • partition_spec

    A divisória na qual a propriedade tem de ser definida.

    Sintaxe:PARTITION ( partition_col_name = partition_col_val [ , ... ] )

  • SERDEPROPERTIES (key1 = val1, key2 = val2, ...

    As propriedades SERDE a definir.

Opções de tabela Delta

Além das ALTER TABLE opções padrão, as tabelas Delta suportam as opções descritas nesta secção.

Nesta secção:

Para adicionar, alterar e substituir exemplos de colunas, consulte explicitamente atualizar o esquema.

ADICIONAR COLUNAS

Nota

Disponível em Databricks Runtime 7.0 ou superior.

Adiciona colunas a uma tabela existente, incluindo a adição de colunas aninhadas. Se já existir uma coluna com o mesmo nome na mesa ou na mesma estrutura aninhada, é lançada uma exceção.

Syntax

ALTER TABLE table_identifier ADD COLUMNS (col_name data_type [COMMENT col_comment] [FIRST|AFTER colA_name], ...)

ALTER TABLE table_identifier ADD COLUMNS (col_name.nested_col_name data_type [COMMENT col_comment] [FIRST|AFTER colA_name], ...)

CHANGE COLUNA

Nota

Disponível em Databricks Runtime 7.0 ou superior.

Altera a definição de coluna de uma tabela existente. Pode alterar o tipo de dados, comentar ou anular colunas de colunas e reencomendar.

Syntax

ALTER TABLE table_identifier (ALTER|CHANGE) [COLUMN] alterColumnAction

ALTER TABLE table_identifier (ALTER|CHANGE) [COLUMN] alterColumnAction

alterColumnAction:
    : TYPE dataType
    : [COMMENT col_comment]
    : [FIRST|AFTER colA_name]
    : (SET | DROP) NOT NULL

COLUNAS DE MUDANÇA (Sintaxe de colmeia)

Nota

Disponível em Databricks Runtime 7.0 ou superior.

Syntax

ALTER TABLE table_identifier CHANGE [COLUMN] col_name col_name data_type [COMMENT col_comment] [FIRST|AFTER colA_name]

ALTER TABLE table_identifier CHANGE [COLUMN] col_name.nested_col_name col_name data_type [COMMENT col_comment] [FIRST|AFTER colA_name]

Altera a definição de coluna de uma tabela existente. Pode alterar o comentário da coluna e reencomendar as colunas.

Nota

Em Databricks Runtime 7.0 e acima não pode CHANGE COLUMN utilizar:

  • Para alterar o conteúdo de tipos de dados complexos, tais como structs. Em vez disso, utilize ADD COLUMNS para adicionar novas colunas a campos aninhados, ou ALTER COLUMN para alterar as propriedades de uma coluna aninhada.
  • Para relaxar a anulação de uma coluna. Em vez disso, utilize ALTER TABLE table_name ALTER COLUMN column_name DROP NOT NULL .

SUBSTITUIR COLUNAS

Nota

Disponível em Databricks Runtime 7.0 ou superior.

Substitui as definições de coluna de uma tabela existente. Suporta alterar os comentários de colunas, adicionar colunas e reordenar colunas. Se as definições de colunas especificadas não forem compatíveis com as definições existentes, é lançada uma exceção.

Syntax

ALTER TABLE table_name REPLACE COLUMNS (col_name1 col_type1 [COMMENT col_comment1], ...)

ADICIONAR RESTRIÇÃO

Nota

Disponível em Databricks Runtime 7.4 ou superior.

Adiciona um constrangimento que deve ser verdadeiro para cada linha de entrada em uma tabela.

Para mais informações, consulte a restrição DE VERIFICAÇÃO.

Syntax

ALTER TABLE table_identifier ADD CONSTRAINT constraint_name CHECK condition
  • constraint_name

    O nome de um constrangimento a adicionar.

  • condição

    Uma expressão booleana que deve ser verdadeira para cada linha de entrada.

RESTRIÇÃO DE QUEDA

Deixa cair um constrangimento da mesa.

Nota

Disponível em Databricks Runtime 7.4 ou superior.

Syntax

ALTER TABLE table_identifier DROP CONSTRAINT constraint_name
  • constraint_name

    O nome de uma restrição para cair.

Exemplos

-- RENAME table
DESC student;
+-----------------------+---------+-------+
|               col_name|data_type|comment|
+-----------------------+---------+-------+
|                   name|   string|   NULL|
|                 rollno|      int|   NULL|
|                    age|      int|   NULL|
|# Partition Information|         |       |
|             # col_name|data_type|comment|
|                    age|      int|   NULL|
+-----------------------+---------+-------+

ALTER TABLE Student RENAME TO StudentInfo;

-- After Renaming the table
DESC StudentInfo;
+-----------------------+---------+-------+
|               col_name|data_type|comment|
+-----------------------+---------+-------+
|                   name|   string|   NULL|
|                 rollno|      int|   NULL|
|                    age|      int|   NULL|
|# Partition Information|         |       |
|             # col_name|data_type|comment|
|                    age|      int|   NULL|
+-----------------------+---------+-------+

-- RENAME partition

SHOW PARTITIONS StudentInfo;
+---------+
|partition|
+---------+
|   age=10|
|   age=11|
|   age=12|
+---------+

ALTER TABLE default.StudentInfo PARTITION (age='10') RENAME TO PARTITION (age='15');

-- After renaming Partition
SHOW PARTITIONS StudentInfo;
+---------+
|partition|
+---------+
|   age=11|
|   age=12|
|   age=15|
+---------+

-- Add new columns to a table
DESC StudentInfo;
+-----------------------+---------+-------+
|               col_name|data_type|comment|
+-----------------------+---------+-------+
|                   name|   string|   NULL|
|                 rollno|      int|   NULL|
|                    age|      int|   NULL|
|# Partition Information|         |       |
|             # col_name|data_type|comment|
|                    age|      int|   NULL|
+-----------------------+---------+-------+

ALTER TABLE StudentInfo ADD columns (LastName string, DOB timestamp);

-- After Adding New columns to the table
DESC StudentInfo;
+-----------------------+---------+-------+
|               col_name|data_type|comment|
+-----------------------+---------+-------+
|                   name|   string|   NULL|
|                 rollno|      int|   NULL|
|               LastName|   string|   NULL|
|                    DOB|timestamp|   NULL|
|                    age|      int|   NULL|
|# Partition Information|         |       |
|             # col_name|data_type|comment|
|                    age|      int|   NULL|
+-----------------------+---------+-------+

-- Add a new partition to a table
SHOW PARTITIONS StudentInfo;
+---------+
|partition|
+---------+
|   age=11|
|   age=12|
|   age=15|
+---------+

ALTER TABLE StudentInfo ADD IF NOT EXISTS PARTITION (age=18);

-- After adding a new partition to the table
SHOW PARTITIONS StudentInfo;
+---------+
|partition|
+---------+
|   age=11|
|   age=12|
|   age=15|
|   age=18|
+---------+

-- Drop a partition from the table
SHOW PARTITIONS StudentInfo;
+---------+
|partition|
+---------+
|   age=11|
|   age=12|
|   age=15|
|   age=18|
+---------+

ALTER TABLE StudentInfo DROP IF EXISTS PARTITION (age=18);

-- After dropping the partition of the table
SHOW PARTITIONS StudentInfo;
+---------+
|partition|
+---------+
|   age=11|
|   age=12|
|   age=15|
+---------+

-- Adding multiple partitions to the table
SHOW PARTITIONS StudentInfo;
+---------+
|partition|
+---------+
|   age=11|
|   age=12|
|   age=15|
+---------+

ALTER TABLE StudentInfo ADD IF NOT EXISTS PARTITION (age=18) PARTITION (age=20);

-- After adding multiple partitions to the table
SHOW PARTITIONS StudentInfo;
+---------+
|partition|
+---------+
|   age=11|
|   age=12|
|   age=15|
|   age=18|
|   age=20|
+---------+

-- ALTER OR CHANGE COLUMNS
DESC StudentInfo;
+-----------------------+---------+-------+
|               col_name|data_type|comment|
+-----------------------+---------+-------+
|                   name|   string|   NULL|
|                 rollno|      int|   NULL|
|               LastName|   string|   NULL|
|                    DOB|timestamp|   NULL|
|                    age|      int|   NULL|
|# Partition Information|         |       |
|             # col_name|data_type|comment|
|                    age|      int|   NULL|
+-----------------------+---------+-------+

ALTER TABLE StudentInfo ALTER COLUMN name COMMENT "new comment";

--After ALTER or CHANGE COLUMNS
DESC StudentInfo;
+-----------------------+---------+-----------+
|               col_name|data_type|    comment|
+-----------------------+---------+-----------+
|                   name|   string|new comment|
|                 rollno|      int|       NULL|
|               LastName|   string|       NULL|
|                    DOB|timestamp|       NULL|
|                    age|      int|       NULL|
|# Partition Information|         |           |
|             # col_name|data_type|    comment|
|                    age|      int|       NULL|
+-----------------------+---------+-----------+

-- Change the fileformat
ALTER TABLE loc_orc SET fileformat orc;

ALTER TABLE p1 partition (month=2, day=2) SET fileformat parquet;

-- Change the file Location
ALTER TABLE dbx.tab1 PARTITION (a='1', b='2') SET LOCATION '/path/to/part/ways'

-- SET SERDE/ SERDE Properties
ALTER TABLE test_tab SET SERDE 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe';

ALTER TABLE dbx.tab1 SET SERDE 'org.apache.hadoop' WITH SERDEPROPERTIES ('k' = 'v', 'kay' = 'vee')

-- SET TABLE PROPERTIES
ALTER TABLE dbx.tab1 SET TBLPROPERTIES ('winner' = 'loser');

-- SET TABLE COMMENT Using SET PROPERTIES
ALTER TABLE dbx.tab1 SET TBLPROPERTIES ('comment' = 'A table comment.');

-- Alter TABLE COMMENT Using SET PROPERTIES
ALTER TABLE dbx.tab1 SET TBLPROPERTIES ('comment' = 'This is a new comment.');

-- DROP TABLE PROPERTIES
ALTER TABLE dbx.tab1 UNSET TBLPROPERTIES ('winner');