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