ALTER TABLE (Databricks SQL)

Ändrar schemat eller egenskaperna för en tabell.

Se skriva om data för typändringar eller byta namn på kolumner iDelta Lake.

Om du vill ändra kommentaren för en tabell använder du COMMNENT ON.

Om tabellen cachelagras rensar kommandot cachelagrade data i tabellen och alla dess beroenden som refererar till den. Cachen fylls i när tabellen eller beroendena nås nästa gång.

Syntax

ALTER TABLE table_name
   { RENAME clause |
     ADD COLUMN clause |
     ALTER COLUMN clause |
     ADD CONSTRAINT clause |
     DROP CONSTRAINT clause |
     SET LOCATION clause |
     ADD PARTITION clause |
     DROP PARTITION clause |
     RENAME PARTITION clause |
     RECOVER PARTITIONS clause |
     SET TBLPROPERTIES clause |
     UNSET TBLPROPERTIES clause |
     SET LOCATION clause }

Parametrar

  • Table_name

    Identifierar tabellen som ändras. Namnet får inte innehålla någon temporal specifikation.

  • BYT NAMN TILL to_table_name

    Byter namn på tabellen till en ny tabell i samma databas.

  • LÄGG TILL KOLUMN

    Den här satsen stöds inte för JDBC datakällor.

    Lägger till en eller flera kolumner i tabellen eller fält i befintliga kolumner i en Delta Lake-tabell.

    { ADD [COLUMNS | COLUMNS ]
      ( { {column_identifier | field_name} data_type [COMMENT comment] [FIRST | AFTER identifier] } [, ...] ) }
    
    • column_identifier

      Namnet på kolumnen som ska läggas till. Namnet måste vara unikt i tabellen.

      Om FIRST inte eller anges läggs kolumnen eller fältet till i AFTER name slutet.

    • field_name

      Det fullständigt kvalificerade namnet på fältet som ska läggas till i en befintlig kolumn. Alla komponenter i sökvägen till det kapslade fältet måste finnas och själva fältnamnet måste vara unikt.

    • KOMMENTARSkommentar

      En valfri STRING-literal som beskriver den tillagda kolumnen eller fältet.

    • FIRST

      Om det anges läggs kolumnen till som den första kolumnen i tabellen, eller så läggs fältet till som det första fältet i i den innehållande structen.

    • AFTER-identifierare

      Om det anges läggs kolumnen eller fältet till omedelbart efter fältet eller kolumnen identifier .

  • ALTER COLUMN

    Ändrar en egenskap eller platsen för en kolumn.

    { { ALTER | CHANGE } [COLUMN] { column_identifier | field_name }
      { COMMENT comment |
        { FIRST | AFTER column_identifier } |
        { SET | DROP } NOT NULL } } }
    
    • column_identifier

      Namnet på kolumnen som ska ändras.

    • field_name

      Det fullständigt kvalificerade namnet på fältet som ska ändras. Alla komponenter i sökvägen till det kapslade fältet måste finnas.

    • KOMMENTARSkommentar

      Ändrar beskrivningen av column_name kolumnen. comment måste vara en STRING-literal.

    • FIRST- eller AFTER-identifierare

      Flyttar kolumnen från den aktuella positionen till fronten ( FIRST ) eller AFTER omedelbart identifier . Den här satsen stöds endast om table_name är en Delta-tabell.

    • ANGE INTE NULL ELLER TA BORT INTE NULL

      Ändrar domänen för giltiga kolumnvärden för att undanta nullvärden SET NOT NULL eller inkludera nullvärden DROP NOT NULL . Det här alternativet stöds endast för Delta Lake-tabeller. Delta Lake ser till att begränsningen är giltig för alla befintliga och nya data.

  • ADD CONSTRAINT constraint_name CHECK ( condition )

    Lägger till en kontrollbegränsning i Delta Lake-tabellen.

    • constraint_name

      En identifierare som är unik i tabellen.

    • CHECK ( villkor )

      Ett deterministiskt uttryck som returnerar ett BOOLEAN-uttryck.

      conditionkan bestå av literaler, kolumnidentifierare i tabellen och deterministiska, inbyggda SQL funktioner eller operatorer förutom:

      Får condition heller inte innehålla någon condition.

      För att en CHECK-begränsning ska uppfyllas Azure Databricks den utvärderas till true .

      Delta Lake verifierade giltigheten för kontrollbegränsningen mot både nya och befintliga data. Om en befintlig rad bryter mot begränsningen utlöses ett fel.

  • DROP CONSTRAINT constraint_name

    Tar bort en kontrollbegränsning från Delta Lake-tabellen.

  • LÄGG TILL PARTITION

    Om detta anges läggs en eller flera partitioner till i tabellen. Det går inte att lägga till partitioner för Delta Lake-tabeller.

    ADD [IF NOT EXISTS] { PARTITION clause [ LOCATION path ] } [...]
    
    • OM DET INTE FINNS

      En valfri -sats som dirigerar Databricks SQL att ignorera -instruktionen om partitionen redan finns.

    • PARTITION-sats

      En partition som ska läggas till. Partitionsnycklarna måste matcha partitionering av tabellen och associeras med värden. Om partitionen redan finns utlöses ett fel om inte IF NOT EXISTS har angetts.

    • LOCATION path (PLATSsökväg)

      path måste vara en STRING-literal som representerar en valfri plats som pekar på partitionen.

      Om ingen plats anges härleds platsen från platsen för tabellen och partitionsnycklarna.

      Om det finns filer på den plats som de fyller i partitionen och måste vara kompatibla data_source med för tabellen och dess alternativ.

  • TA BORT PARTITION

    Om den här satsen anges släpper du en eller flera partitioner från tabellen, om du vill kan du ta bort filer på partitionens platser.

    Delta Lake-tabeller har inte stöd för att ta bort partitioner.

    DROP [ IF EXISTS ] PARTITION clause [, ...] [PURGE]
    
    • OM FINNS

      När du IF EXISTS anger Azure Databricks ignoreras ett försök att ta bort partitioner som inte finns. Annars orsakar icke-befintliga partitioner ett fel.

    • PARTITION-sats

      Anger en partition som ska tas bort. Om partitionen bara delvis identifieras tas en sektor med partitioner bort.

    • RENSA

      Om detta anges måste tabellkatalogen ta bort partitionsdata genom att hoppa över mappen Papperskorg även när katalogen har konfigurerat en. Alternativet gäller endast för hanterade tabeller. Det är endast effektivt när:

      Filsystemet stöder en papperskorgsmapp. Katalogen har konfigurerats för att flytta den bort ignorerade partitionen till mappen Papperskorgen. Det finns ingen papperskorgsmapp i AWS S3, så den är inte effektiv.

      Du behöver inte ta bort filer manuellt när du har släppt partitioner.

  • BYT NAMN PÅ PARTITION

    Ersätter nycklarna för en partition.

    Delta Lake-tabeller stöder inte namnbyte av partitioner.

    from_partition_clause RENAME TO to_partition_clause
    
  • ÅTERSTÄLLA PARTITIONER

    Den här satsen gäller inte för Delta Lake-tabeller.

    Instruerar Databricks SQL genomsöker tabellens plats och lägger till filer i tabellen som har lagts till direkt i filsystemet.

  • ANGE TBLPROPERTIES

    Anger en eller flera användardefinierade egenskaper för tabellen. Egenskaper är nyckel/värde-par. Om egenskapernas nycklar finns ersätts värdena med de nya värdena. Om egenskapernas nycklar inte finns läggs nyckel/värde-paren till i egenskaperna.

    SET TBLPROPERTIES ( { property_key = property_val } [, ...] )
    
    • property_key

      Egenskapsnyckeln. Nyckeln kan bestå av en eller flera identifierare avgränsade med en punkt eller en stränglitteral.

      Egenskapsnycklar måste vara unika.

    • property_val

      Det nya värdet för egenskapen . Värdet måste vara en BOOLESK, STRÄNG, HELTAL eller DECIMAL-literal.

  • TA BORT TBLPROPERTIES

    Tar bort en eller flera användardefinierade egenskaper för table_name .

    UNSET TBLPROPERTIES [ IF EXISTS ] ( property_key [, ...] )
    
    • OM FINNS

      Om IF EXISTS inget fel anges om egenskapen inte har angetts.

    • property_key

      Nyckeln kan bestå av en eller flera identifierare avgränsade med en punkt eller en stränglitteral.

      Egenskapsnycklar måste vara unika.

  • ANGE PLATS

    Flyttar platsen för en partition eller tabell.

    Delta Lake stöder inte flytt av enskilda partitioner i en Delta Lake-tabell.

    [ PARTITION clause ] SET LOCATION path
    
    • PARTITION-sats

      Du kan också identifiera partitionen som platsen ska ändras för. Om du utelämnar namngivning av en partition Azure Databricks flyttar platsen för tabellen.

    • PLATSsökväg

      path måste vara en STRING-literal. Anger den nya platsen för partitionen eller tabellen.

      Filer på den ursprungliga platsen flyttas inte till den nya platsen.

Exempel

Exempel på Delta Lake-tillägg och -ändringar av kolumner finns i

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

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