ALTER TABLE
説明
既存のテーブルを変更します。以下を含みます:
- テーブル、パーティション、インデックスの名前変更
- テーブルコメントの変更
- アトミックスワップ
- パーティションの追加/削除とパーティション属性の変更
- スキーマ変更
- ロールアップイン デックスの作成/削除
- ビットマップインデックスの変更
- 手動データバージョンのコンパクション
ヒント
この操作には、対象テーブルに対する ALTER 権限が必要です。
構文
ALTER TABLE [<db_name>.]<tbl_name>
alter_clause1[, alter_clause2, ...]
alter_clause は6つの操作に分類されます:パーティション、ロールアップ、スキーマ変更、名前変更、インデックス、スワップ、コメント、コンパクト。
- rename: テーブル、ロールアップインデックス、またはパーティションの名前を変更します。
- comment: テーブルコメントを変更します(v3.1以降でサポート)。
- partition: パーティションのプロパティを変更、パーティションを削除、またはパーティションを追加します。
- bucket: バケッティング方法とバケット数を変更します。
- column: 列を追加、削除、または並べ替え、または列タイプを変更します。
- rollup index: ロールアップインデックスを作成または削除します。
- bitmap index: インデックスを変更します(ビットマップインデックスのみ変更可能)。
- swap: 2つのテーブルをアトミックに交換します。
- schema change: 列を追加、削除、または並べ替え、または列タイプを変更します。
- compact: ロードされたデータのバージョンをマージするための手動コンパクションを実行します(v3.1以降でサポート)。
制限と使用上の注意
- パーティション、列、ロールアップインデックスに対する操作は、1つの ALTER TABLE ステートメントで実行できません。
- 列名は変更できません。
- 列コメントは変更できません。
- 1つのテーブルには、同時に1つのスキーマ変更操作しか実行できません。1つのテーブルに対して2つのスキーマ変更コマンドを同時に実行することはできません。
- バケット、列、ロールアップインデックスに対する操作は非同期操作です。タスクが送信された後、すぐに成功メッセージが返されます。進行状況を確認するには SHOW ALTER TABLE コマンドを実行し、操作をキャンセルするには CANCEL ALTER TABLE コマンドを実行します。
- 名前変更、コメント、パーティション、ビットマップインデ ックス、スワップに対する操作は同期操作であり、コマンドの返り値が実行の完了を示します。
名前変更
名前変更は、テーブル名、ロールアップインデックス、およびパーティション名の変更をサポートします。
テーブルの名前を変更する
ALTER TABLE <tbl_name> RENAME <new_tbl_name>