Utilisez l'instruction ALTER TABLE pour modifier le schéma d'une table externe dans AnalyticDB for MySQL. Les opérations prises en charge incluent l'ajout, la suppression, le renommage et la modification de colonnes, ainsi que l'ajout et la suppression de partitions sur les tables externes partitionnées Object Storage Service (OSS).
Cette rubrique s'applique uniquement aux tables externes. Pour connaître la syntaxe ALTER TABLE applicable aux tables internes AnalyticDB for MySQL, consultez la page ALTER TABLE.
Prérequis
Avant de commencer, assurez-vous de disposer :
D'un cluster AnalyticDB for MySQL Enterprise Edition, Basic Edition ou Data Lakehouse Edition
Colonnes
Toutes les opérations sur les colonnes nécessitent la version V3.2.1.0 ou ultérieure du cluster. Pour afficher et mettre à jour la version mineure de votre cluster, connectez-vous à la console AnalyticDB for MySQL et accédez à la section Configuration Information de la page Cluster Information. Pour plus d'informations, consultez la page Update the minor version of a cluster.
Le tableau suivant récapitule les opérations sur les colonnes prises en charge et leurs contraintes :
| Opération | Prise en charge | Notes |
|---|---|---|
| Ajouter une colonne non clé primaire | Oui | Utilisez ADD COLUMN. |
| Ajouter une colonne clé primaire | Non | Vous ne pouvez pas ajouter de colonnes clés primaires à une table externe existante. |
| Supprimer une colonne non clé primaire | Oui | Utilisez DROP COLUMN. |
| Supprimer une colonne clé primaire | Non | Vous ne pouvez pas supprimer de colonnes clés primaires d'une table externe existante. |
| Renommer une colonne | Oui | Utilisez RENAME COLUMN. |
| Modifier le type de données d'une colonne | Oui | Utilisez MODIFY COLUMN. |
| Modifier la valeur par défaut d'une colonne | Oui | Utilisez MODIFY COLUMN ... DEFAULT. |
| Modifier le commentaire d'une colonne | Oui | Utilisez MODIFY COLUMN ... COMMENT. |
Ajouter une colonne
Syntaxe
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'],...)}
Remarques d'utilisation
Vous ne pouvez pas ajouter de colonnes clés primaires.
Exemples
Ajoutez une colonne VARCHAR nommée province à la table osstest1 :
ALTER TABLE osstest1 ADD COLUMN province VARCHAR COMMENT 'Province';
Ajoutez simultanément deux colonnes à la table osstest1 : une colonne Boolean nommée vip et une colonne VARCHAR nommée tags avec une valeur par défaut :
ALTER TABLE osstest1 ADD COLUMN (vip BOOLEAN COMMENT 'VIP', tags VARCHAR DEFAULT 'None' COMMENT 'Tags');
Supprimer une colonne
Syntaxe
ALTER TABLE db_name.table_name DROP [COLUMN] column_name
Remarques d'utilisation
Vous ne pouvez pas supprimer de colonnes clés primaires.
Exemple
Supprimez la colonne province de la table osstest1 :
ALTER TABLE osstest1 DROP COLUMN province;
Renommer une colonne
Syntaxe
ALTER TABLE table_name RENAME COLUMN column_name to new_column_name
Exemple
Renommez la colonne city_name de la table osstest1 en city :
ALTER TABLE osstest1 RENAME COLUMN city_name to city;
Modifier le type de données d'une colonne
Syntaxe
ALTER TABLE table_name MODIFY [COLUMN] column_name new_column_type
Exemple
Modifiez le type de données de la colonne age de la table osstest1 de INT vers BIGINT :
ALTER TABLE osstest1 MODIFY COLUMN age BIGINT;
Modifier la valeur par défaut d'une colonne
Syntaxe
ALTER TABLE table_name MODIFY [COLUMN] column_name column_type DEFAULT constant|CURRENT_TIMESTAMP
Exemple
Définissez la valeur par défaut de la colonne sex de la table osstest1 sur 0 :
ALTER TABLE osstest1 MODIFY COLUMN sex INT DEFAULT 0;
Modifier le commentaire d'une colonne
Syntaxe
ALTER TABLE table_name MODIFY [COLUMN] column_name column_type COMMENT 'new_comment'
Exemple
Mettez à jour le commentaire de la colonne region de la table osstest1 :
ALTER TABLE osstest1 MODIFY COLUMN region VARCHAR COMMENT 'region';
Partitions
Les opérations sur les partitions ci-dessous s'appliquent uniquement aux tables externes partitionnées OSS. La version V3.1.8.0 ou ultérieure du cluster est requise. Pour afficher et mettre à jour la version mineure de votre cluster, connectez-vous à la console AnalyticDB for MySQL et accédez à la section Configuration Information de la page Cluster Information. Pour plus d'informations, consultez la page Update the minor version of a cluster.
Utilisez ALTER TABLE ADD PARTITION pour ajouter manuellement une partition ou une partition multiniveau. Pour permettre à AnalyticDB for MySQL d'analyser un chemin OSS et d'enregistrer automatiquement les partitions, utilisez plutôt MSCK REPAIR TABLE.
Ajouter une partition
Syntaxe
ALTER TABLE table_name ADD PARTITION (partition_key=value[,...]) LOCATION 'location';
Paramètres
| Paramètre | Description |
|---|---|
table_name |
Le nom de la table externe. |
(partition_key=value[,...]) |
La partition à enregistrer. Pour ajouter une partition multiniveau, spécifiez plusieurs paires partition_key=value séparées par des virgules. Exemple : (date='20230613', city='hangzhou'). |
location |
Le chemin OSS des données de partition. Par exemple, si la partition est p1='20230613' et que le chemin de l'objet est oss://testBucketName/testfolder/p1=20230613/data.csv, définissez ce paramètre sur oss://testBucketName/testfolder/. |
Exemples
Ajoutez une partition unique :
ALTER TABLE adb_external_db.partition_table ADD PARTITION (p1='20230613') LOCATION 'oss://testBucketName/testfolder/p1=20230613/';
Ajoutez une partition multiniveau :
ALTER TABLE adb_external_db.partition_table ADD PARTITION (p1='20230613', p2='hangzhou') LOCATION 'oss://testBucketName/testfolder/p1=20230613/p2=hangzhou';
Supprimer une partition
Syntaxe
ALTER TABLE table_name DROP PARTITION (partition_key=value[,...]);
Paramètres
| Paramètre | Description |
|---|---|
table_name |
Le nom de la table externe. |
(partition_key=value[,...]) |
La partition à supprimer. Pour supprimer une partition multiniveau, spécifiez plusieurs paires partition_key=value séparées par des virgules. Exemple : (date='20230613', city='hangzhou'). |
Exemples
Supprimez une partition unique :
ALTER TABLE adb_external_db.partition_table DROP PARTITION (p1='20230613');
Supprimez une partition multiniveau :
ALTER TABLE adb_external_db.partition_table DROP PARTITION (p1='20230613', p2='hangzhou');