ALTER TABLE (Databricks SQL)

Wijzigt het schema of de eigenschappen van een tabel.

Tabelnaamparameter

De parameter tabelnaam in alle -instructies heeft de volgende vorm:

KOLOMMEN TOEVOEGEN

Voegt kolommen toe aan een bestaande tabel.

Syntax

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

Zie ADD COLUMNS Delta-tabelopties voor syntaxis die specifiek is voor Delta-tabellen.

Parameters

  • KOLOMMEN ( col_spec )

    De kolommen die moeten worden toegevoegd.

PARTITIE TOEVOEGEN EN NEERZETTEN

PARTITIE TOEVOEGEN

Voegt een partitie toe aan de gepartitiestabel.

Syntaxis

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

partition_spec
  PARTITION ( { partition_col_name1  = partition_col_val1 } [ , ... ] )

Parameters

  • partition_spec

    Partitie die moet worden toegevoegd.

  • INDIEN BESTAAT

    Maak geen uitzondering als de partitie niet bestaat.

DROP PARTITION

De partitie van de tabel wordt uitvalt.

Syntaxis

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

partition_spec
  PARTITION ( { partition_col_name1  = partition_col_val1 } [ , ... ] )

Parameters

  • partition_spec

    Partitie die moet worden uitgevallen.

WIJZIG DE NAAM IN

Wijzigt de naam van een bestaande tabel in de database.

Syntaxis

ALTER TABLE table_name partition_spec RENAME TO partition_spec

partition_spec
    PARTITION ( { partition_col_name1 = partition_col_val1 } [ , ... ] )

Parameters

  • partition_spec

    De naam van de partitie moet worden gewijzigd.

INSTELLEN EN NIET-INGESTELD

TABELEIGENSCHAPPEN INSTELLEN

Stelt tabeleigenschappen in en stelt deze niet in. Als een eigenschap al is ingesteld, overschrijvingen de oude waarde met de nieuwe.

Syntaxis

-- Set Table Properties
ALTER TABLE table_name SET TBLPROPERTIES ( { key1 = val1 } [, ...] )

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

Parameters

  • TBLPROPERTIES ( key1 = val1, key2 = val2, ... )

    De tabeleigenschappen die moeten worden ingesteld of niet zijn ingesteld.

  • INDIEN BESTAAT

    Geef geen uitzondering op als de eigenschap niet bestaat.

Voorbeeld: Een tabelcommenter instellen

Als u een tabelcommenter wilt instellen, moet u het volgende uitvoeren:

ALTER TABLE table_name SET TBLPROPERTIES ('comment' = 'A table comment.')

LOCATIE INSTELLEN

Wijzigt de locatie van de tabeldefinitie. Bestanden worden verplaatst naar de nieuwe locatie, niet gekopieerd.

Syntaxis

-- Change file location
ALTER TABLE table_identifier [ partition_spec ] SET LOCATION 'new_location'

Parameters

  • partition_spec

    De partitie waarop de eigenschap moet worden ingesteld.

  • new_location

    Het pad naar de locatie van de tabelbestanden.

Opties voor Delta-tabel

Naast de standaardopties ALTER TABLE ondersteunen Delta-tabellen de opties die in deze sectie worden beschreven.

In deze sectie:

Zie Expliciet schema bijwerken voor het toevoegen, wijzigen en vervangen van kolomvoorbeelden.

KOLOMMEN TOEVOEGEN

Voegt kolommen toe aan een bestaande tabel, inclusief het toevoegen van geneste kolommen. Als er al een kolom met dezelfde naam in de tabel of dezelfde geneste struct bestaat, wordt er een uitzondering gemaakt.

Syntax

ALTER TABLE table_name ADD COLUMNS ( { columns_name data_type [COMMENT column_comment] [FIRST|AFTER colA_name] } [, ...])

ALTER TABLE table_name ADD COLUMNS ( { column_name.nested_col_name data_type [COMMENT column_comment] [FIRST|AFTER colA_name] } [, ...])

Zie Kolommen toevoegen voor voorbeelden van kolommen toevoegen.

KOLOM WIJZIGEN

Wijzigt een kolomdefinitie van een bestaande tabel. U kunt het gegevenstype, de opmerking of null-waarde van een kolom wijzigen en de volgorde van kolommen wijzigen.

Syntax

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

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

alterColumnAction
 { TYPE dataType
   [COMMENT col_comment]
   [ FIRST | AFTER colA_name]
   {SET | DROP} NOT NULL }

Notitie

  • U kunt een kolomtype alleen wijzigen in Delta-tabellen.
  • U kunt het type wijzigen van Byte -> Short -> Integer zonder dat er gegevens worden herschreven. Voor alle andere typewijzigingen moet u de gegevens herschrijven.

Zie Kolomcommentaar wijzigen of Volgorde wijzigen voor voorbeelden van kolom wijzigen. Zie ook Beperkingen.

CHANGE COLUMN (Hive-syntaxis)

Wijzigt een kolomdefinitie van een bestaande tabel. U kunt de opmerking van de kolom wijzigen en de volgorde van kolommen wijzigen.

Syntax

ALTER TABLE table_name CHANGE [COLUMN] column_name column_name data_type [COMMENT column_comment] [FIRST | AFTER colA_name]

ALTER TABLE table_name CHANGE [COLUMN] column_name.nested_col_name column_name data_type [COMMENT column_comment] [FIRST | AFTER colA_name]

Notitie

U kunt niet CHANGE COLUMN gebruiken:

  • De inhoud van complexe gegevenstypen zoals structs wijzigen. Gebruik in ADD COLUMNS plaats daarvan om nieuwe kolommen toe te voegen aan geneste velden ALTER COLUMN of om de eigenschappen van een geneste kolom te wijzigen.
  • Om de null-waarde van een kolom te vereenversen. Gebruik in plaats daarvan ALTER TABLE table_name ALTER COLUMN column_name DROP NOT NULL .

KOLOMMEN VERVANGEN

Vervangt de kolomdefinities van een bestaande tabel. Het ondersteunt het wijzigen van de opmerkingen van kolommen, het toevoegen van kolommen en het opnieuw ordenen van kolommen. Als opgegeven kolomdefinities niet compatibel zijn met de bestaande definities, wordt er een uitzondering gemaakt.

Syntax

ALTER TABLE table_name REPLACE COLUMNS ( { column_name1 column_type1 [COMMENT col_comment1] } [, ...] )

Zie Kolommen vervangen voor voorbeelden van kolommen vervangen.

Voorbeelden

-- 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 file Location
ALTER TABLE dbx.tab1 PARTITION (a='1', b='2') SET LOCATION '/path/to/part/ways'

-- 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');