ALTER TABLE (Databricks SQL)

Zmienia schemat lub właściwości tabeli.

Aby uzyskać informacje o zmianach typu lub zmianie nazw kolumn w uciece Delta Lake, zobacz ponowne wpisywanie danych.

Aby zmienić komentarz w tabeli, użyj funkcji COMMNENT ON.

Jeśli tabela jest buforowana, polecenie wyczyści buforowane dane tabeli i wszystkie jej zależności, które odwołują się do tej tabeli. Pamięć podręczna zostanie wypełniona z rozmachem, gdy następnym razem uzyskasz dostęp do tabeli lub zależności.

Składnia

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 }

Parametry

  • Nazwa_tabeli

    Identyfikuje tabelę, która jest zmieniana. Nazwa nie może zawierać specyfikacji czasowej.

  • ZMIEŃ NAZWĘ NA TO_TABLE_NAME

    Zmienia nazwę tabeli na nową tabelę w tej samej bazie danych.

  • DODAWANIE KOLUMNY

    Ta klauzula nie jest obsługiwana w JDBC przypadku źródeł danych.

    Dodaje co najmniej jedną kolumnę do tabeli lub pola do istniejących kolumn w tabeli delta Lake.

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

      Nazwa kolumny do dodania. Nazwa musi być unikatowa w obrębie tabeli.

      Jeśli FIRST nie określono wartości lub , kolumna lub pole zostaną dołączone na AFTER name końcu.

    • Field_name

      W pełni kwalifikowana nazwa pola, które ma zostać dodane do istniejącej kolumny. Wszystkie składniki ścieżki do zagnieżdżonych pól muszą istnieć, a sama nazwa pola musi być unikatowa.

    • KOMENTARZ

      Opcjonalny literał STRING opisujący dodaną kolumnę lub pole.

    • FIRST

      Jeśli zostanie określona kolumna zostanie dodana jako pierwsza kolumna tabeli lub pole zostanie dodane jako pierwsze pole w zawierającej ją infrastrukturze.

    • Identyfikator AFTER

      Jeśli określono kolumnę lub pole, zostanie dodane bezpośrednio po polu lub kolumnie identifier .

  • ALTER COLUMN

    Zmienia właściwość lub lokalizację kolumny.

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

      Nazwa kolumny, która ma zostać zmieniona.

    • Field_name

      W pełni kwalifikowana nazwa pola do zmiany. Wszystkie składniki ścieżki do zagnieżdżonych pól muszą istnieć.

    • KOMENTARZ

      Zmienia opis column_name kolumny. comment musi być literału STRING.

    • Identyfikator FIRST lub AFTER

      Przenosi kolumnę z bieżącej pozycji na przód FIRST () lub natychmiast AFTER na kolumnę identifier . Ta klauzula jest obsługiwana tylko table_name wtedy, gdy jest tabelą delty.

    • USTAW WARTOŚĆ NOT NULL LUB DROP NOT NULL

      Zmienia domenę prawidłowych wartości kolumn, aby wykluczyć wartości null SET NOT NULL lub uwzględnić wartości null DROP NOT NULL . Ta opcja jest obsługiwana tylko w przypadku tabel delta Lake. Delta Lake zapewni, że ograniczenie będzie prawidłowe dla wszystkich istniejących i nowych danych.

  • ADD CONSTRAINT constraint_name CHECK ( warunek )

    Dodaje ograniczenie sprawdzania do tabeli delta lake.

    • Constraint_name

      Identyfikator, który jest unikatowy w tabeli.

    • CHECK (warunek )

      Wyrażenie deterministyczne zwracające wartość logiczną.

      conditionMoże składać się z literałów, identyfikatorów kolumn w tabeli oraz deterministycznych, wbudowanych SQL lub operatorów z wyjątkiem:

      Ponadto condition nie może zawierać żadnego condition.

      Aby ograniczenie CHECK było spełnione w Azure Databricks musi mieć wartość true .

      Delta Lake zweryfikowała poprawność ograniczenia kontroli zarówno względem nowych, jak i istniejących danych. Jeśli jakikolwiek istniejący wiersz narusza ograniczenie, zostanie podniesiony błąd.

  • DROP CONSTRAINT CONSTRAINT_NAME

    Usuwa ograniczenie sprawdzania z tabeli delta lake.

  • DODAWANIE PARTYCJI

    Jeśli określono, dodaje co najmniej jedną partycję do tabeli. Dodawanie partycji nie jest obsługiwane w przypadku tabel delta lake.

    ADD [IF NOT EXISTS] { PARTITION clause [ LOCATION path ] } [...]
    
    • JEŚLI NIE ISTNIEJE

      Opcjonalna klauzula, która SQL do ignorowania instrukcji , jeśli partycja już istnieje.

    • PARTITION, klauzula

      Partycja do dodania. Klucze partycji muszą odpowiadać partycjonowania tabeli i być skojarzone z wartościami. Jeśli partycja już istnieje, zostanie podniesiony błąd, IF NOT EXISTS chyba że określono.

    • Ścieżka LOKALIZACJI

      path musi być literału STRING reprezentującego opcjonalną lokalizację, która wskaże partycję.

      Jeśli nie określono lokalizacji, lokalizacja będzie pochodzić z lokalizacji tabeli i kluczy partycji.

      Jeśli w lokalizacji znajdują się pliki, wypełniają partycję i muszą być zgodne z tabelą data_source i jej opcjami.

  • DROP PARTITION

    Jeśli ta klauzula zostanie określona, usunie co najmniej jedną partycję z tabeli, opcjonalnie usuwając wszystkie pliki w lokalizacjach partycji.

    Tabele delta Lake nie obsługują porzucania partycji.

    DROP [ IF EXISTS ] PARTITION clause [, ...] [PURGE]
    
    • JEŚLI ISTNIEJE

      Po IF EXISTS określeniu Azure Databricks zignoruje próbę upuszczania partycji, które nie istnieją. W przeciwnym razie istniejące partycje będą powodować błąd.

    • PARTITION, klauzula

      Określa partycję, która ma zostać porzucona. Jeśli partycja zostanie zidentyfikowana tylko częściowo, wycinek partycji zostanie porzucony.

    • PURGE

      W przypadku ustawienia wykazu tabel należy usunąć dane partycji, pomijając folder Kosz nawet wtedy, gdy katalog go skonfigurował. Opcja ma zastosowanie tylko w przypadku tabel zarządzanych. Obowiązuje tylko wtedy, gdy:

      System plików obsługuje folder Kosz. Katalog został skonfigurowany do przenoszenia usuniętej partycji do folderu Kosz. Na platformie AWS S3 nie ma folderu Kosz, więc nie jest on skuteczny.

      Nie ma potrzeby ręcznego usuwania plików po usunięciu partycji.

  • ZMIENIANIE NAZWY PARTYCJI

    Zastępuje klucze partycji.

    Tabele delta Lake nie obsługują zmiany nazw partycji.

    from_partition_clause RENAME TO to_partition_clause
    
  • ODZYSKIWANIE PARTYCJI

    Ta klauzula nie ma zastosowania do tabel delta lake.

    Instruuje usługę Databricks SQL, aby przeskanować lokalizację tabeli i dodać wszystkie pliki do tabeli, które zostały dodane bezpośrednio do systemu plików.

  • USTAW WŁAŚCIWOŚCI TBLPROPERTIES

    Ustawia co najmniej jedną zdefiniowaną przez użytkownika właściwości tabeli. Właściwości to pary klucz-wartość. Jeśli klucze właściwości istnieją, wartości są zastępowane nowymi wartościami. Jeśli klucze właściwości nie istnieją, pary klucz-wartość są dodawane do właściwości.

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

      Klucz właściwości. Klucz może składać się z co najmniej jednego identyfikatora oddzielonego kropką lub literału ciągu.

      Klucze właściwości muszą być unikatowe.

    • property_val

      Nowa wartość właściwości . Wartość musi być literału BOOLEAN, STRING, INTEGER lub DECIMAL.

  • UNSET TBLPROPERTIES

    Usuwa co najmniej jedną zdefiniowaną przez użytkownika table_name właściwości .

    UNSET TBLPROPERTIES [ IF EXISTS ] ( property_key [, ...] )
    
    • JEŚLI ISTNIEJE

      O IF EXISTS ile nie zostanie określony błąd jest raided, jeśli właściwość nie została ustawiona.

    • property_key

      Klucz może składać się z co najmniej jednego identyfikatora oddzielonego kropką lub literału ciągu.

      Klucze właściwości muszą być unikatowe.

  • USTAWIANIE LOKALIZACJI

    Przenosi lokalizację partycji lub tabeli.

    Delta Lake nie obsługuje przenoszenia poszczególnych partycji tabeli delta Lake.

    [ PARTITION clause ] SET LOCATION path
    
    • KLAUZULA PARTITION

      Opcjonalnie identyfikuje partycję, dla której lokalizacja zostanie zmieniona. W przypadku pominięcia nazewnictwa partycji Azure Databricks lokalizacji tabeli.

    • Ścieżka LOKALIZACJI

      path musi być literału CIĄGU. Określa nową lokalizację dla partycji lub tabeli.

      Pliki w oryginalnej lokalizacji nie zostaną przeniesione do nowej lokalizacji.

Przykłady

Aby uzyskać informacje na temat dodawania i modyfikowania przykładów kolumn w udatku Delta Lake, zobacz

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