AnalyticDB for MySQL では、ALTER TABLE
文を実行して外部テーブルのスキーマを変更できます。たとえば、テーブル構造の変更、列名の変更、列のデータ型の変更、外部テーブルへのパーティションの追加または削除を実行できます。このトピックでは、ALTER TABLE
文を実行して外部テーブルのスキーマを変更する方法について説明します。
このトピックは外部テーブルにのみ適用されます。 AnalyticDB for MySQL テーブルの ALTER TABLE 構文の詳細については、「ALTER TABLE」をご参照ください。
前提条件
AnalyticDB for MySQL Enterprise Edition、Basic Edition、または Data Lakehouse Edition クラスタが作成されていること。
列
以下の構文は、V3.2.1.0 以降の AnalyticDB for MySQL クラスタでのみサポートされています。
AnalyticDB for MySQL クラスタのマイナーバージョンを表示および更新するには、AnalyticDB for MySQL コンソールにログインし、クラスター情報 ページの 構成情報 セクションに移動します。
列を追加する
構文
ALTER TABLE db_name.table_name ADD [COLUMN]
{column_name column_type [DEFAULT {constant|CURRENT_TIMESTAMP}|AUTO_INCREMENT] [NULL|NOT NULL] [COMMENT 'comment']
| (column column_type [DEFAULT {constant|CURRENT_TIMESTAMP}|AUTO_INCREMENT] [NULL|NOT NULL] [COMMENT 'comment'],...)}
使用上の注意
プライマリキー列を追加することはできません。
例
osstest1
テーブルにprovince
という名前の VARCHAR 型の列を追加します。ALTER TABLE osstest1 ADD COLUMN province VARCHAR COMMENT 'Province';
osstest1
テーブルに 2 つの列を追加します。1 つはvip
という名前の BOOLEAN 型の列、もう 1 つはtags
という名前の VARCHAR 型の列です。ALTER TABLE osstest1 ADD COLUMN (vip BOOLEAN COMMENT 'VIP',tags VARCHAR DEFAULT 'None' COMMENT 'Tags');
列を削除する
構文
ALTER TABLE db_name.table_name DROP [COLUMN] column_name
使用上の注意
プライマリキー列を削除することはできません。
例
osstest1
テーブルから province
列を削除します。
ALTER TABLE osstest1 DROP COLUMN province;
列の名前を変更する
構文
ALTER TABLE table_name RENAME COLUMN column_name to new_column_name
例
osstest1
テーブルの city_name
列の名前を city
に変更します。
ALTER TABLE osstest1 RENAME COLUMN city_name to city;
列のデータ型を変更する
構文
ALTER TABLE table_name MODIFY [COLUMN] column_name new_column_type
例
osstest1
テーブルの age
列のデータ型を INT から BIGINT に変更します。
ALTER TABLE osstest1 MODIFY COLUMN age BIGINT;
列のデフォルト値を変更する
構文
ALTER TABLE table_name MODIFY [COLUMN] column_name column_type DEFAULT constant|CURRENT_TIMESTAMP
例
osstest1
テーブルの sex
列のデフォルト値を 0 に設定します。
ALTER TABLE osstest1 MODIFY COLUMN sex INT DEFAULT 0;
列のコメントを変更する
構文
ALTER TABLE table_name MODIFY [COLUMN] column_name column_type COMMENT 'new_comment'
例
osstest1
テーブルの region
列のコメントを region に変更します。
ALTER TABLE osstest1 MODIFY COLUMN region VARCHAR COMMENT 'region';
パーティション
パーティションに関連する構文は、Object Storage Service (OSS) パーティション外部テーブルにのみ適用されます。
以下の構文は、V3.1.8.0 以降の AnalyticDB for MySQL クラスタでのみサポートされています。
AnalyticDB for MySQL クラスタのマイナーバージョンを表示および更新するには、AnalyticDB for MySQL コンソールにログインし、クラスター情報 ページの 構成情報 セクションに移動します。
ALTER TABLE ADD PARTITION 文を使用して、パーティションまたはマルチレベルパーティションを手動で追加できます。 AnalyticDB for MySQL が OSS パスを識別してパーティションを追加する方法については、「MSCK REPAIR TABLE」をご参照ください。
パーティションを追加する
構文
ALTER TABLE table_name ADD PARTITION (partition_key=value[,...]) LOCATION 'location';
パラメータ
パラメータ | 説明 |
| 外部テーブルの名前。 |
| 追加するパーティション。 マルチレベルパーティションを追加するには、複数の |
| パーティションの OSS パス。 たとえば、オブジェクトの OSS パスが oss://testBucketName/testfolder/p1=20230613/data.csv で、追加するパーティションが p1='20230613' の場合、パラメータを |
例
パーティションを追加します。
ALTER TABLE adb_external_db.partition_table ADD PARTITION (p1='20230613') LOCATION 'oss://testBucketName/testfolder/p1=20230613/';
マルチレベルパーティションを追加します。
ALTER TABLE adb_external_db.partition_table ADD PARTITION (p1='20230613',p2='hangzhou') LOCATION 'oss://testBucketName/testfolder/p1=20230613/p2=hangzhou';
パーティションを削除する
構文
ALTER TABLE table_name DROP PARTITION (partition_key=value[,...]);
パラメータ
パラメータ | 説明 |
| 外部テーブルの名前。 |
| 削除するパーティション。 マルチレベルパーティションを削除するには、複数の |
例
パーティションを削除します。
ALTER TABLE adb_external_db.partition_table DROP PARTITION (p1='20230613');
マルチレベルパーティションを削除します。
ALTER TABLE adb_external_db.partition_table DROP PARTITION (p1='20230613',p2='hangzhou');