ALTER TABLE

Wijzigt het schema of de eigenschappen van een tabel.

Als de tabel in de cache is opgeslagen, worden met de opdracht gegevens in de cache van de tabel en alle afhankelijke gegevens die naar de tabel verwijzen geweken. De cache wordt lazily gevuld wanneer de tabel of de afhankelijke gegevens de volgende keer worden gebruikt.

Parameter voor tabel-id

De parameter tabel-id in alle -instructies heeft de volgende vorm:

  • table_identifier
    • [database_name.] table_name: Een tabelnaam, eventueel gekwalificeerd met een databasenaam.
    • delta.`<path-to-table>`: De locatie van een bestaande Delta-tabel.

KOLOMMEN TOEVOEGEN

Kolommen toevoegen aan een bestaande tabel.

Syntax

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

Zie Schemaopties voor Delta-tabellen voor syntaxis die specifiek is voor ADD COLUMNSADD COLUMNS

Parameters

  • COLUMNS ( col_spec )

    De kolommen die moeten worden toegevoegd.

PARTITIE TOEVOEGEN EN NEERZETTEN

PARTITIE TOEVOEGEN

Hiermee voegt u een partitie toe aan de gepartitiesteerde tabel.

Als de tabel in de cache is opgeslagen, worden met de opdracht gegevens in de cache van de tabel en alle afhankelijke gegevens die naar de tabel verwijzen geweken. De cache wordt lazily gevuld wanneer de tabel of de afhankelijke gegevens de volgende keer worden gebruikt.

Syntaxis

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

Parameters

  • partition_spec

    Partitie die moet worden toegevoegd.

    Syntaxis:

DROP PARTITION

De partitie van de tabel wordt uitvalt.

Syntaxis

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

Parameters

  • partition_spec

    Partitie die moet worden uitgevallen.

    Syntaxis:

  • INDIEN BESTAAT

    Geef geen uitzondering op als de partitie niet bestaat.

  • PURGE

    Als deze is ingesteld, moet de tabelcatalogus partitiegegevens verwijderen door de prullenbak over te slaan, zelfs wanneer de catalogus er een heeft geconfigureerd. De optie is alleen van toepassing op . Het is alleen effectief:

    • Voor beheerde tabellen.
    • Wanneer het bestandssysteem een map Prullenbak ondersteunt. AWS S3 biedt geen ondersteuning voor een Prullenbak-map.
    • Wanneer de catalogus is geconfigureerd voor het verplaatsen van verwijderde partities naar de map Prullenbak.

    Wanneer u verwijderde partities uit beheerde tabellen verwijdert, hoeft u bestanden niet handmatig te verwijderen na het verwijderen van partities.

    PURGE wordt niet verwijderd in een externe partitie. U moet opdrachten of API's gebruiken die het onderliggende partitiebestand rechtstreeks bewerken.

    U moet het onderliggende bestand bijvoorbeeld verwijderen uit Azure Blob Storage.

WIJZIG DE NAAM IN

Wijzigt de naam van een bestaande tabel in de database. De opdracht voor het wijzigen van de tabelnaam kan niet worden gebruikt om een tabel tussen databases te verplaatsen, alleen om de naam van een tabel in dezelfde database te wijzigen.

Als de tabel in de cache is opgeslagen:

  • Met de opdracht voor het wijzigen van de naam van de tabel worden alle afhankelijke gegevens van de tabel, zoals weergaven die naar de tabel verwijzen, uit de lijst gezet. De afhankelijke moeten opnieuw expliciet in de cache worden opgeslagen.
  • Met de opdracht voor het wijzigen van de partitienaam worden caches van alle tabelafhankelijken geweken terwijl ze in de cache worden opgeslagen. De caches worden dus de volgende keer dat ze worden gebruikt, lazily gevuld.

Syntaxis

ALTER TABLE table_name RENAME TO table_name

ALTER TABLE table_identifier partition_spec RENAME TO partition_spec

Parameters

  • Table_name

    Een tabelnaam, eventueel gekwalificeerd met een databasenaam.

    Syntaxis:

  • partition_spec

    De naam van de partitie moet worden gewijzigd.

    Syntaxis:

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_identifier SET TBLPROPERTIES ( key1 = val1, key2 = val2, ... )

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

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

Voer het volgende uit om een tabelcommenter in te stellen:

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

SET SERDE

Hiermee stelt u SERDE de of SERDEPROPERTIES in Hive-tabellen in. Als een eigenschap al is ingesteld, overschrijvingen de oude waarde met de nieuwe.

Syntaxis

-- 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, ... ) ]

Parameters

  • serde_class_name

    Het volledig gekwalificeerde pad naar de SerDe-klassenaam.

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

    De SerDe-eigenschappen die moeten worden ingesteld.

LOCATIE INSTELLEN

Wijzigt de locatie van de tabeldefinitie of partitie. Bestanden worden niet verplaatst naar de nieuwe locatie.

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.

Schemaopties voor Delta-tabel

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

In deze sectie:

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 geworpen.

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], ...)

Zie Kolommen toevoegen voor voorbeelden van kolommen toevoegen.

KOLOM WIJZIGEN

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

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
  • DROP NOT NULL is beschikbaar in Databricks Runtime 7.0 en hoger.
  • SET NOT NULL is beschikbaar in Databricks Runtime 7.4 en hoger.

Notitie

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

Zie Kolomcommentaar wijzigen of Orde orden 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_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]

Notitie

In Databricks Runtime 7.0 en hoger kunt u 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 (col_name1 col_type1 [COMMENT col_comment1], ...)

Zie Kolommen vervangen voor voorbeelden van kolommen vervangen.

BEPERKING TOEVOEGEN

Notitie

Beschikbaar in Databricks Runtime 7.4 en hoger.

Voegt een beperking toe die een waar moet zijn voor elke invoerrij in een tabel.

Zie CHECK-beperking voor een voorbeeld.

Syntax

ALTER TABLE table_identifier ADD CONSTRAINT constraint_name CHECK condition
  • constraint_name

    De naam van een beperking die moet worden toevoegen.

  • Voorwaarde

    Een Booleaanse expressie die waar moet zijn voor elke invoerrij.

BEPERKING VOOR NEERZETTEN

Er wordt een beperking uit de tabel daalt.

Notitie

Beschikbaar in Databricks Runtime 7.4 en hoger.

Syntax

ALTER TABLE table_identifier DROP CONSTRAINT constraint_name
  • constraint_name

    De naam van een beperking die moet worden wegvallen.

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