Exemples ALTER TABLE - Amazon Redshift

Exemples ALTER TABLE

Les exemples suivants illustrent l'utilisation de base de la commande ALTER TABLE.

Renommer une table

La commande suivante permet de renommer la table USERS en USERS_BKUP :

alter table users rename to users_bkup;

Vous pouvez également utiliser ce type de commande pour renommer une vue.

Modifier le propriétaire d'une table ou d'une vue

La commande suivante remplace le propriétaire de la table VENUE par l'utilisateur DWUSER :

alter table venue owner to dwuser;

Les commandes suivantes créent une vue, puis modifient son propriétaire :

create view vdate as select * from date; alter table vdate owner to vuser;

La commande suivante désactive la politique RLS pour la table :

ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY OFF;

Renommer une colonne

La commande suivante renomme la colonne VENUESEATS de la table VENUE en VENUESIZE :

alter table venue rename column venueseats to venuesize;

Supprimer une contrainte de table

Pour supprimer une contrainte de table, telle qu'une contrainte de clé primaire, de clé étrangère ou unique, commencez par rechercher le nom interne de la contrainte. Ensuite, spécifiez le nom de la contrainte dans la commande ALTER TABLE. L'exemple suivant recherche les contraintes de la table CATEGORY, puis supprime la clé principale avec le nom category_pkey.

select constraint_name, constraint_type from information_schema.table_constraints where constraint_schema ='public' and table_name = 'category'; constraint_name | constraint_type ----------------+---------------- category_pkey | PRIMARY KEY alter table category drop constraint category_pkey;

Modifier une colonne VARCHAR

Pour conserver le stockage, vous pouvez définir une table initialement avec des colonnes VARCHAR dotées de la taille minimale nécessaire pour vos données actives. Vous pouvez modifier ultérieurement la table afin d'augmenter la taille de la colonne si plus tard vous avez besoin d'accueillir plus de chaînes.

L'exemple suivant augmente la taille de la colonne EVENTNAME à VARCHAR (300).

alter table event alter column eventname type varchar(300);

Modifier l'encodage de la compression d'une colonne

Vous pouvez modifier le codage de compression d'une colonne. Vous trouverez ci-dessous une série d'exemples illustrant cette approche. La définition de table pour ces exemples est la suivante.

create table t1(c0 int encode lzo, c1 bigint encode zstd, c2 varchar(16) encode lzo, c3 varchar(32) encode zstd);

L'instruction suivante modifie l'encodage de compression pour la colonne c0 de l'encodage LZO à l'encodage AZ64.

alter table t1 alter column c0 encode az64;

L'instruction suivante modifie l'encodage de compression pour la colonne c1 de l'encodage Zstandard à l'encodage AZ64.

alter table t1 alter column c1 encode az64;

L'instruction suivante modifie l'encodage de compression pour la colonne c2 de l'encodage LZO à l'encodage Byte-dictionary.

alter table t1 alter column c2 encode bytedict;

L'instruction suivante modifie l'encodage de compression pour la colonne c3 de l'encodage Zstandard à l'encodage Runlength.

alter table t1 alter column c3 encode runlength;

Modifier une colonne DISTSTYLE KEY DISTKEY

Les exemples suivants montre comment modifier les colonnes DISTSTYLE et DISTKEY d'une table.

Créez une table avec un style de distribution EVEN. La vue SVV_TABLE_INFO montre que la colonne DISTSTYLE est EVEN.

create table inventory( inv_date_sk int4 not null , inv_item_sk int4 not null , inv_warehouse_sk int4 not null , inv_quantity_on_hand int4 ) diststyle even; Insert into inventory values(1,1,1,1); select "table", "diststyle" from svv_table_info; table | diststyle -----------+---------------- inventory | EVEN

Modifiez la table DISTKEY en inv_warehouse_sk. La vue SVV_TABLE_INFO montre la colonne inv_warehouse_sk en tant que clé de distribution résultante.

alter table inventory alter diststyle key distkey inv_warehouse_sk; select "table", "diststyle" from svv_table_info; table | diststyle -----------+----------------------- inventory | KEY(inv_warehouse_sk)

Modifiez la table DISTKEY en inv_item_sk. La vue SVV_TABLE_INFO montre la colonne inv_item_sk en tant que clé de distribution résultante.

alter table inventory alter distkey inv_item_sk; select "table", "diststyle" from svv_table_info; table | diststyle -----------+----------------------- inventory | KEY(inv_item_sk)

Modifier une table en DISTSTYLE ALL

Les exemples suivants montrent comment modifier une table en DISTSTYLE ALL.

Créez une table avec un style de distribution EVEN. La vue SVV_TABLE_INFO montre que la colonne DISTSTYLE est EVEN.

create table inventory( inv_date_sk int4 not null , inv_item_sk int4 not null , inv_warehouse_sk int4 not null , inv_quantity_on_hand int4 ) diststyle even; Insert into inventory values(1,1,1,1); select "table", "diststyle" from svv_table_info; table | diststyle -----------+---------------- inventory | EVEN

Modifiez la table DISTSTYLE en ALL. La vue SVV_TABLE_INFO affiche le DISTSYTLE modifié.

alter table inventory alter diststyle all; select "table", "diststyle" from svv_table_info; table | diststyle -----------+---------------- inventory | ALL

Modifier une table SORTKEY

Vous pouvez modifier une table pour avoir une clé de tri composée ou aucune clé de tri.

Dans la définition de table suivante, la table t1 est définie par une clé de tri entrelacée.

create table t1 (c0 int, c1 int) interleaved sortkey(c0, c1);

La commande suivante modifie la table d'une clé de tri entrelacée en une clé de tri composée.

alter table t1 alter sortkey(c0, c1);

La commande suivante modifie la table pour supprimer la clé de tri entrelacée.

alter table t1 alter sortkey none;

Dans la définition de table suivante, la table t1 est définie avec une colonne c0 comme clé de tri.

create table t1 (c0 int, c1 int) sortkey(c0);

La commande suivante modifie la table t1 en clé de tri composée.

alter table t1 alter sortkey(c0, c1);

Modifier une table en ENCODE AUTO

L'exemple suivant montre comment modifier une table en ENCODE AUTO.

La définition de table pour cet exemple est la suivante. La colonne c0 est définie avec le type d'encodage AZ64, et la colonne c1 est définie avec le type d'encodage LZO.

create table t1(c0 int encode AZ64, c1 varchar encode LZO);

Pour cette table, l'instruction suivante modifie l'encodage en AUTO.

alter table t1 alter encode auto;

L'exemple suivant illustre comment modifier une table pour supprimer le paramètre ENCODE AUTO.

La définition de table pour cet exemple est la suivante. Les colonnes de la table sont définies sans encodage. Dans ce cas, l'encodage est par défaut ENCODE AUTO.

create table t2(c0 int, c1 varchar);

Pour cette table, l'instruction suivante modifie l'encodage de la colonne c0 en LZO. L'encodage de la table n'est plus défini sur ENCODE AUTO.

alter table t2 alter column c0 encode lzo;;