ALTER TABLEALTER TABLE

テーブルのスキーマまたはプロパティを変更します。Alters the schema or properties of a table.

テーブル識別子パラメーターTable identifier parameter

すべてのステートメントのテーブル識別子パラメーターには、次の形式があります。The table identifier parameter in all statements has the following form:

  • table_identifiertable_identifier
    • [database_name.] table_name: テーブル名。必要に応じて、データベース名で修飾します。[database_name.] table_name: A table name, optionally qualified with a database name.
    • delta.`<path-to-table>`: 既存のデルタテーブルの場所。delta.`<path-to-table>`: The location of an existing Delta table.

列の追加ADD COLUMNS

既存のテーブルに列を追加します。Add columns to an existing table.

構文Syntax

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

パラメーターParameters

  • 列 (col_spec)COLUMNS ( col_spec )

    追加する列。The columns to be added.

パーティションの追加と削除ADD AND DROP PARTITION

パーティションの追加ADD PARTITION

パーティションテーブルにパーティションを追加します。Adds a partition to the partitioned table.

構文Syntax

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

パラメーターParameters

  • partition_specpartition_spec

    追加するパーティション。Partition to be added.

    構文:PARTITION ( partition_col_name = partition_col_val [ , ... ] )Syntax: PARTITION ( partition_col_name = partition_col_val [ , ... ] )

パーティションの削除DROP PARTITION

テーブルのパーティションを削除します。Drops the partition of the table.

構文Syntax

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

パラメーターParameters

  • partition_specpartition_spec

    削除するパーティション。Partition to be dropped.

    構文:PARTITION ( partition_col_name = partition_col_val [ , ... ] )Syntax: PARTITION ( partition_col_name = partition_col_val [ , ... ] )

名前をに変更RENAME TO

データベース内の既存のテーブルの名前を変更します。Changes the name of an existing table in the database.

構文Syntax

ALTER TABLE table_name RENAME TO table_name

ALTER TABLE table_identifier partition_spec RENAME TO partition_spec

パラメーターParameters

  • table_nametable_name

    テーブル名。必要に応じて、データベース名で修飾します。A table name, optionally qualified with a database name.

    構文:[database_name.] table_nameSyntax: [database_name.] table_name

  • partition_specpartition_spec

    名前を変更するパーティション。Partition to be renamed.

    構文:PARTITION ( partition_col_name = partition_col_val [ , ... ] )Syntax: PARTITION ( partition_col_name = partition_col_val [ , ... ] )

設定と設定解除SET AND UNSET

テーブルのプロパティの設定SET TABLE PROPERTIES

テーブルのプロパティを設定および設定解除します。Set and unset table properties. プロパティが既に設定されている場合、は古い値を新しい値で上書きします。If a property was already set, overrides the old value with the new one.

構文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, ... )

SERDE の設定SET SERDE

SERDEHive テーブルのまたはを設定し SERDEPROPERTIES ます。Sets the SERDE or SERDEPROPERTIES in Hive tables. プロパティが既に設定されている場合、は古い値を新しい値で上書きします。If a property was already set, overrides the old value with the new one.

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

場所の設定とファイル形式の設定SET LOCATION And SET FILE FORMAT

既存のテーブルのファイルの場所とファイル形式を設定します。Sets the file location and file format for existing tables.

構文Syntax

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

パラメーターParameters

  • partition_specpartition_spec

    プロパティを設定する必要があるパーティション。The partition on which the property has to be set.

    構文:PARTITION ( partition_col_name = partition_col_val [ , ... ] )Syntax: PARTITION ( partition_col_name = partition_col_val [ , ... ] )

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

    設定する SERDE プロパティ。The SERDE properties to be set.

デルタテーブルスキーマのオプションDelta table schema options

標準オプションに加えて ALTER TABLE 、デルタテーブルでは、このセクションで説明するオプションがサポートされています。In addition to the standard ALTER TABLE options, Delta tables support the options described in this section.

このセクションの内容は次のとおりです。In this section:

列の追加、変更、および置換の例については、「 スキーマを明示的に更新する」を参照してください。For add, change, and replace column examples, see Explicitly update schema.

列の追加ADD COLUMNS

注意

Databricks Runtime 7.0 以降で使用できます。Available in Databricks Runtime 7.0 and above.

入れ子になった列の追加を含む、既存のテーブルに列を追加します。Adds columns to an existing table including adding nested columns. 同じ名前の列がテーブルまたは入れ子になった同じ構造体に既に存在する場合は、例外がスローされます。If a column with the same name already exists in the table or the same nested struct, an exception is thrown.

構文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 COLUMN

注意

Databricks Runtime 7.0 以降で使用できます。Available in Databricks Runtime 7.0 and above.

既存のテーブルの列定義を変更します。Changes a column definition of an existing table. 列のデータ型、コメント、または null 値の許容属性を変更したり、列の順序を変更したりできます。You can change the data type, comment, or nullability of a column and reorder columns.

構文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

列の変更 (Hive 構文)CHANGE COLUMN (Hive syntax)

注意

Databricks Runtime 7.0 以降で使用できます。Available in Databricks Runtime 7.0 and above.

既存のテーブルの列定義を変更します。Changes a column definition of an existing table. 列のコメントを変更し、列を並べ替えることができます。You can change the comment of the column and reorder columns.

構文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]

注意

Databricks Runtime 7.0 以降では、次のものを使用できません CHANGE COLUMNIn Databricks Runtime 7.0 and above you cannot use CHANGE COLUMN:

  • 構造体などの複合データ型の内容を変更する場合は。To change the contents of complex data types such as structs. 代わりに ADD COLUMNS 、を使用して、入れ子になったフィールドに新しい列を追加するか、 ALTER COLUMN 入れ子になった列のプロパティを変更します。Instead use ADD COLUMNS to add new columns to nested fields, or ALTER COLUMN to change the properties of a nested column.
  • 列の null 値の許容を緩和する場合は。To relax the nullability of a column. 代わりにを使用 ALTER TABLE table_name ALTER COLUMN column_name DROP NOT NULL します。Instead use ALTER TABLE table_name ALTER COLUMN column_name DROP NOT NULL.

列の置換REPLACE COLUMNS

注意

Databricks Runtime 7.0 以降で使用できます。Available in Databricks Runtime 7.0 and above.

既存のテーブルの列定義を置き換えます。Replaces the column definitions of an existing table. 列のコメントの変更、列の追加、列の並べ替えをサポートしています。It supports changing the comments of columns, adding columns, and reordering columns. 指定した列定義が既存の定義と互換性がない場合は、例外がスローされます。If specified column definitions are not compatible with the existing definitions, an exception is thrown.

構文Syntax

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

制約の追加ADD CONSTRAINT

注意

Databricks Runtime 7.4 以降で使用できます。Available in Databricks Runtime 7.4 and above.

は、テーブル内の各入力行に対して true である必要があるという制約を追加します。Adds a constraint that a must be true for each input row in a table.

例については、「 check 制約」を参照してください。For an example, see CHECK constraint.

構文Syntax

ALTER TABLE table_identifier ADD CONSTRAINT constraint_name CHECK condition
  • constraint_nameconstraint_name

    追加する制約の名前。The name of a constraint to add.

  • conditioncondition

    各入力行に対して true である必要があるブール式。A Boolean expression that must be true for each input row.

制約の削除DROP CONSTRAINT

テーブルから制約を削除します。Drops a constraint from the table.

注意

Databricks Runtime 7.4 以降で使用できます。Available in Databricks Runtime 7.4 and above.

構文Syntax

ALTER TABLE table_identifier DROP CONSTRAINT constraint_name
  • constraint_nameconstraint_name

    削除する制約の名前。The name of a constraint to drop.

Examples

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