ALTER TABLE
Cette commande modifie la définition d'une table Amazon Redshift ou d'une table externe Amazon Redshift Spectrum. Cette commande met à jour les valeurs et les propriétés définies par CREATE TABLE ou CREATE EXTERNAL TABLE.
Vous ne pouvez pas exécuter ALTER TABLE sur une table externe au sein d'un bloc de transaction (BEGIN ... END). Pour plus d'informations sur les transactions, consultez Isolement sérialisable.
ALTER TABLE verrouille la table pour les opérations de lecture et d'écriture jusqu'à la fin de la transaction englobant l'opération ALTER TABLE, sauf s'il est indiqué spécifiquement dans la documentation que vous pouvez interroger des données ou effectuer d'autres opérations sur la table pendant sa modification.
Privilèges requis
L'utilisateur qui modifie une table doit disposer des privilèges appropriés pour que la commande aboutisse. Selon la commande ALTER TABLE, l'un des privilèges suivants est requis.
Superuser
Utilisateurs disposant du privilège ALTER TABLE
Propriétaire de table disposant du privilège USAGE sur le schéma
Syntaxe
ALTER TABLE table_name { ADD table_constraint | DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ] | OWNER TO new_owner | RENAME TO new_name | RENAME COLUMN column_name TO new_name | ALTER COLUMN column_name TYPE updated_varchar_data_type_size | ALTER COLUMN column_name ENCODE new_encode_type | ALTER COLUMN column_name ENCODE encode_type, | ALTER COLUMN column_name ENCODE encode_type, .....; | ALTER DISTKEY column_name | ALTER DISTSTYLE ALL | ALTER DISTSTYLE EVEN | ALTER DISTSTYLE KEY DISTKEY column_name | ALTER DISTSTYLE AUTO | ALTER [COMPOUND] SORTKEY ( column_name [,...] ) | ALTER SORTKEY AUTO | ALTER SORTKEY NONE | ALTER ENCODE AUTO | ADD [ COLUMN ] column_name column_type [ DEFAULT default_expr ] [ ENCODE encoding ] [ NOT NULL | NULL ] | | DROP [ COLUMN ] column_name [ RESTRICT | CASCADE ] | ROW LEVEL SECURITY { ON | OFF } [ FOR DATASHARES ]} where table_constraint is: [ CONSTRAINT constraint_name ] { UNIQUE ( column_name [, ... ] ) | PRIMARY KEY ( column_name [, ... ] ) | FOREIGN KEY (column_name [, ... ] ) REFERENCES reftable [ ( refcolumn ) ]} The following options apply only to external tables: SET LOCATION { 's3://bucket/folder/' | 's3://bucket/manifest_file' } | SET FILE FORMAT format | | SET TABLE PROPERTIES ('property_name'='property_value') | PARTITION ( partition_column=partition_value [, ...] ) SET LOCATION { 's3://bucket/folder' |'s3://bucket/manifest_file' } | ADD [IF NOT EXISTS] PARTITION ( partition_column=partition_value [, ...] ) LOCATION { 's3://bucket/folder' |'s3://bucket/manifest_file' } [, ... ] | DROP PARTITION ( partition_column=partition_value [, ...] )
Pour réduire le temps d'exécution de la commande ALTER TABLE, vous pouvez combiner certaines clauses de la commande ALTER TABLE.
Amazon Redshift prend en charge les combinaisons suivantes des clauses ALTER TABLE :
ALTER TABLE tablename ALTER SORTKEY (column_list), ALTER DISTKEY column_Id; ALTER TABLE tablename ALTER DISTKEY column_Id, ALTER SORTKEY (column_list); ALTER TABLE tablename ALTER SORTKEY (column_list), ALTER DISTSTYLE ALL; ALTER TABLE tablename ALTER DISTSTYLE ALL, ALTER SORTKEY (column_list);
Paramètres
- table_name
-
Nom de la table à modifier. Spécifiez simplement le nom de la table ou choisissez le format nom_schéma.nom_table pour utiliser un schéma spécifique. Les tables externes doivent être qualifiées à l'aide d'un nom de schéma externe. Vous pouvez aussi spécifier un nom de vue si vous utilisez l'instruction ALTER TABLE pour renommer une vue ou modifier son propriétaire. La longueur maximale d'un nom de table est de 127 octets ; les noms plus longs sont tronqués à 127 octets. Vous pouvez utiliser des caractères multioctets UTF-8 jusqu'à un maximum de quatre octets. Pour plus d'informations sur les noms valides, consultez Noms et identificateurs.
- ADD contrainte_table
-
Clause qui ajoute la contrainte spécifiée à la table. Pour obtenir les descriptions des valeurs de contrainte_table valides, consultez CREATE TABLE.
Note
Vous ne pouvez pas ajouter une contrainte de clé primaire à une colonne acceptant la valeur null. Si la colonne a été créée à l'origine avec la contrainte NOT NULL, vous pouvez ajouter la contrainte de clé primaire.
- DROP CONSTRAINT nom_contrainte
-
Clause qui supprime la contrainte nommée de la table. Pour supprimer une contrainte, spécifiez son nom et non son type. Pour afficher le nom des contraintes de la table, exécutez la requête suivante.
select constraint_name, constraint_type from information_schema.table_constraints;
- RESTRICT
-
Clause qui supprime uniquement la contrainte spécifiée. RESTRICT est une option de DROP CONSTRAINT. RESTRICT ne peut pas être utilisée avec CASCADE.
- CASCADE
-
Clause qui supprime la contrainte spécifiée ainsi que tout ce qui en dépend. CASCADE est une option de DROP CONSTRAINT. CASCADE ne peut pas être utilisée avec RESTRICT.
- OWNER TO nouveau_propriétaire
-
Clause qui modifie le propriétaire de la table (ou de la vue) avec la valeur nouveau_propriétaire.
- RENAME TO nouveau_nom
-
Clause qui renomme une table (ou une vue) selon la valeur spécifiée dans nouveau_nom. La longueur maximale d'un nom de table est de 127 octets ; les noms plus longs sont tronqués à 127 octets.
Vous ne pouvez pas renommer une table permanente en un nom commençant par « # ». Un nom de table commençant par « # » indique une table temporaire.
Vous ne pouvez pas renommer une table externe.
- ALTER COLUMN column_name TYPE updated_varchar_data_type_size
-
Clause qui modifie la taille d'une colonne définie en tant que type de données VARCHAR. Cette clause permet uniquement de modifier la taille d'un type de données VARCHAR. Prenez en compte les restrictions suivantes :
-
Vous ne pouvez pas modifier une colonne avec des encodages de compression BYTEDICT, RUNLENGTH, TEXT255 ou TEXT32K.
-
Vous ne pouvez pas réduire la taille en dessous de la taille maximale des données existantes.
-
Vous ne pouvez pas modifier des colonnes avec des valeurs par défaut.
-
Vous ne pouvez pas modifier des colonnes avec UNIQUE, PRIMARY KEY ou FOREIGN KEY.
-
Vous ne pouvez pas modifier des colonnes dans un bloc de transaction (BEGIN ... END). Pour plus d'informations sur les transactions, consultez Isolement sérialisable.
-
- ALTER COLUMN column_name ENCODE new_encode_type
-
Clause qui modifie l'encodage de compression d'une colonne. Si vous spécifiez le codage de compression pour une colonne, la table n'est plus définie sur ENCODE AUTO. Pour obtenir des informations sur l'encodage de la compression, consultez Utilisation de la compression de colonne.
Lorsque vous modifiez l'encodage de compression pour une colonne, la table reste disponible à des fins d'interrogation.
Prenez en compte les restrictions suivantes :
-
Vous ne pouvez pas modifier une colonne avec le même encodage que celui actuellement défini pour la colonne.
-
Vous ne pouvez pas modifier l'encodage d'une colonne dans une table avec une clé de tri entrelacée.
-
- ALTER COLUMN column_name ENCODE encode_type, ALTER COLUMN column_name ENCODE encode_type, .....;
-
Clause qui modifie le codage de compression de plusieurs colonnes dans une seule commande. Pour obtenir des informations sur l'encodage de la compression, consultez Utilisation de la compression de colonne.
Lorsque vous modifiez l'encodage de compression pour une colonne, la table reste disponible à des fins d'interrogation.
Prenez en compte les restrictions suivantes :
Vous ne pouvez pas modifier une colonne pour un type de codage identique ou différent plusieurs fois dans une seule commande.
Vous ne pouvez pas modifier une colonne avec le même encodage que celui actuellement défini pour la colonne.
-
Vous ne pouvez pas modifier l'encodage d'une colonne dans une table avec une clé de tri entrelacée.
- ALTER DISTSTYLE ALL
-
Clause qui modifie le style de distribution existant d'une table en
ALL
. Éléments à prendre en compte :-
ALTER DISTSYTLE, ALTER SORTKEY et VACUUM ne peuvent pas s'exécuter simultanément sur la même table.
-
Si VACUUM est en cours d'exécution, l'exécution de ALTER DISTSTYLE ALL renvoie une erreur.
-
Si ALTER DISTSTYLE ALL est en cours d'exécution, une opération VACCUM en arrière-plan ne démarre pas sur une table.
-
-
La commande ALTER DISTSTYLE ALL n'est pas prise en charge pour les tables ayant des clés de tri entrelacées et les tables temporaires.
Si le style de distribution était précédemment défini sur AUTO, la table n'est plus candidate à l'optimisation automatique.
Pour plus d'informations sur DISTSTYLE ALL, consultez CREATE TABLE.
-
- ALTER DISTSTYLE EVEN
-
Clause qui modifie le style de distribution existant d'une table en
EVEN
. Éléments à prendre en compte :-
ALTER DISTSYTLE, ALTER SORTKEY et VACUUM ne peuvent pas être exécutés simultanément sur la même table.
-
Si VACUUM est en cours d'exécution, l'exécution d'ALTER DISTSTYLE EVEN renvoie une erreur.
-
Si ALTER DISTSTYLE EVEN est en cours d'exécution, une opération VACUUM en arrière-plan ne démarre pas sur une table.
-
La commande ALTER DISTSTYLE EVEN n'est pas prise en charge pour les tables ayant des clés de tri entrelacées et des tables temporaires.
Si le style de distribution était précédemment défini sur AUTO, la table n'est plus candidate à l'optimisation automatique.
Pour plus d'informations sur DISTSTYLE ALL, consultez CREATE TABLE.
-
- ALTER DISTKEY nom_colonne ou ALTER DISTSTYLE KEY DISTKEY nom_colonne
-
Clause qui modifie la colonne utilisée en tant que clé de distribution d'une table. Éléments à prendre en compte :
-
VACUUM et ALTER DISTKEY ne peuvent pas s'exécuter simultanément sur la même table.
-
Si VACUUM est déjà en cours d'exécution, ALTER DISTKEY renvoie une erreur.
-
Si ALTER DISTKEY est en cours d'exécution, l'opération VACCUM en arrière-plan ne démarre pas sur une table.
-
Si ALTER DISTKEY est en cours d'exécution, l'opération VACCUM au premier plan renvoie une erreur.
-
-
Vous pouvez exécuter une seule commande ALTER DISTKEY sur une table simultanément.
-
La commande ALTER DISTKEY n'est pas prise en charge pour les tables ayant des clés de tri entrelacées.
Si le style de distribution était précédemment défini sur AUTO, la table n'est plus candidate à l'optimisation automatique.
Lorsque DISTSTYLE KEY est spécifié, les données sont distribuées par les valeurs figurant dans la colonne DISTKEY. Pour plus d'informations sur DISTSTYLE, consultez CREATE TABLE.
-
- ALTER DISTSTYLE AUTO
-
Clause qui modifie le style de distribution existant d'une table en AUTO.
Lorsque vous modifiez un style de distribution sur AUTO, le style de distribution de la table est défini comme suit :
Une petite table avec DISTSTYLE ALL est convertie en AUTO(ALL).
Une petite table avec DISTSTYLE EVEN est convertie en AUTO(ALL).
Une petite table avec DISTSTYLE KEY est convertie en AUTO(ALL).
Une grande table avec DISTSTYLE ALL est convertie en AUTO(EVEN).
Une grande table avec DISTSTYLE EVEN est convertie en AUTO(EVEN).
Une grande table avec DISTSTYLE KEY est convertie en AUTO(KEY) et la DISTKEY est conservée. Dans ce cas, Amazon Redshift ne modifie pas la table.
Si Amazon Redshift détermine qu'un nouveau style de distribution ou une nouvelle clé améliorera les performances des requêtes, Amazon Redshift peut modifier le style de distribution ou la clé de votre table à l'avenir. Par exemple, Amazon Redshift peut convertir une table avec DISTSTYLE pour AUTO(KEY) en AUTO(EVEN), ou vice versa.
Pour plus d'informations sur DISTSTYLE AUTO, consultez CREATE TABLE.
Pour afficher le style de distribution appliqué à une table, interrogez la vue du catalogue système SVV_TABLE_INFO. Pour plus d'informations, consultez SVV_TABLE_INFO. Pour afficher les recommandations Amazon Redshift Advisor pour les tables, recherchez la vue catalogue système SVV_ALTER_TABLE_RECOMMENDATIONS. Pour plus d'informations, consultez SVV_ALTER_TABLE_RECOMMENDATIONS. Pour afficher les actions effectuées par Amazon Redshift, interrogez la vue catalogue système SVL_AUTO_WORKER_ACTION. Pour plus d'informations, consultez SVL_AUTO_WORKER_ACTION.
- ALTER [COMPOUND] SORTKEY ( column_name [,...] )
-
Clause qui modifie ou ajoute la clé de tri utilisée pour une table.
Lorsque vous modifiez une clé de tri, l'encodage par compression des colonnes de la nouvelle clé de tri ou de la clé de tri originale peut changer. Si aucun encodage n'est explicitement défini pour la table, Amazon Redshift attribue automatiquement les codages de compression comme suit :
-
Les colonnes qui sont définies comme des clés de tri se voient attribuer une compression RAW.
-
Les colonnes qui sont définies comme des types de données BOOLEAN, REAL ou DOUBLE PRECISION se voient attribuer une compression RAW.
-
Les colonnes qui sont définies comme des types de données SMALLINT, INTEGER, BIGINT, DECIMAL, DATE, TIME, TIMETZ, TIMESTAMP ou TIMESTAMPTZ se voient attribuer une compression AZ64.
-
Les colonnes définies comme CHAR ou VARCHAR sont affectées à la compression LZO.
Éléments à prendre en compte :
-
Vous pouvez définir 400 colonnes au maximum par table pour une clé de tri.
-
Vous pouvez modifier une clé de tri entrelacée en clé de tri composée ou en aucune clé de tri. Toutefois, vous ne pouvez pas modifier une clé de tri composée par une clé de tri entrelacée.
Si la clé de tri était précédemment définie sur AUTO, la table n'est plus candidate à l'optimisation automatique.
-
Amazon Redshift recommande d'utiliser l'encodage RAW (sans compression) pour les colonnes définies comme des clés de tri. Lorsque vous modifiez une colonne pour la choisir comme clé de tri, la compression de la colonne passe en compression RAW (sans compression). Cela peut augmenter la quantité de stockage requise par la table. L'augmentation de la taille de la table dépend de la définition et du contenu spécifiques de la table. Pour plus d'informations sur la compression, consultez encodages de compression.
Les données sont chargées dans une table en fonction de la clé de tri. Lorsque vous modifiez la clé de tri, Amazon Redshift modifie l'ordre des données. Pour plus d'informations sur SORTKEY, consultez CREATE TABLE.
-
- ALTER TRUTKEY AUTO
-
Clause qui modifie ou ajoute la clé de tri de la table cible à AUTO.
Lorsque vous modifiez une clé de tri en AUTO, Amazon Redshift conserve la clé de tri existante de la table.
Si Amazon Redshift détermine qu'une nouvelle clé de tri améliorera les performances des requêtes, Amazon Redshift peut modifier la clé de tri de votre table à l'avenir.
Pour plus d'informations sur SORTKEY AUTO, consultez CREATE TABLE.
Pour afficher la clé de tri d'une table, interrogez la vue catalogue système SVV_TABLE_INFO. Pour plus d'informations, consultez SVV_TABLE_INFO. Pour afficher les recommandations Amazon Redshift Advisor pour les tables, recherchez la vue catalogue système SVV_ALTER_TABLE_RECOMMENDATIONS. Pour plus d'informations, consultez SVV_ALTER_TABLE_RECOMMENDATIONS. Pour afficher les actions effectuées par Amazon Redshift, interrogez la vue catalogue système SVL_AUTO_WORKER_ACTION. Pour plus d'informations, consultez SVL_AUTO_WORKER_ACTION.
- ALTER SORTKEY NONE
-
Clause qui supprime la clé de tri de la table cible.
Si la clé de tri était précédemment définie sur AUTO, la table n'est plus candidate à l'optimisation automatique.
- ALTER ENCODE AUTO
-
Clause qui modifie le type d'encodage des colonnes de la table cible en AUTO. Lorsque vous modifiez l'encodage en AUTO, Amazon Redshift conserve le type d'encodage existant des colonnes de la table. Ensuite, si Amazon Redshift détermine qu'un nouveau type d'encodage peut améliorer les performances de la requête, Amazon Redshift peut modifier le type d'encodage des colonnes de la table.
Si vous modifiez une ou plusieurs colonnes pour spécifier un encodage, Amazon Redshift n'ajuste plus automatiquement l'encodage pour toutes les colonnes de la table. Les colonnes conservent les paramètres d'encodage actuels.
Les actions suivantes n'affectent pas le paramètre ENCODE AUTO pour la table :
Renommage de la table.
Modification du paramètre DISTSTYLE ou SORTKEY pour la table.
Ajout ou suppression d'une colonne avec un paramètre ENCODE.
Utilisation de l'option COMPUPDATE de la commande COPY. Pour plus d'informations, consultez Opérations de chargement de données.
Pour afficher l'encodage d'une table, interrogez la vue catalogue système SVV_TABLE_INFO. Pour plus d'informations, consultez SVV_TABLE_INFO.
- RENAME COLUMN nom_colonne TO nouveau_nom
-
Clause qui renomme une colonne selon la valeur spécifiée dans nouveau_nom. La longueur maximale d'un nom de colonne est de 127 octets ; les noms plus longs sont tronqués à 127 octets. Pour plus d'informations sur les noms valides, consultez Noms et identificateurs.
- ADD [ COLUMN ] nom_colonne
-
Clause qui ajoute une colonne avec le nom spécifié à la table. Vous ne pouvez ajouter qu'une seule colonne à chaque instruction ALTER TABLE.
Vous ne pouvez pas ajouter une colonne qui soit la clé de distribution (DISTKEY) ou une clé de tri (SORTKEY) de la table.
Vous ne pouvez pas utiliser une commande ALTER TABLE ADD COLUMN pour modifier les attributs de table et de colonne suivants :
-
UNIQUE
-
PRIMARY KEY
-
REFERENCES (clé étrangère)
-
IDENTITY ou GENERATED BY DEFAULT AS IDENTITY
La longueur maximale d'un nom de colonne est de 127 octets ; les noms plus longs sont tronqués à 127 octets. Le nombre maximal de colonnes que vous pouvez définir dans une seule table est de 1 600.
Les restrictions suivantes s'appliquent lorsque vous ajoutez une colonne à une table externe :
-
Vous ne pouvez pas ajouter une colonne à une table externe dont les contraintes de table sont DEFAULT, ENCODE, NOT NULL ou NULL.
-
Vous ne pouvez pas ajouter des colonnes à une table externe définie à l'aide du format de fichier AVRO.
-
Si les pseudo-colonnes sont activées, le nombre maximal de colonnes que vous pouvez définir dans une seule table externe est 1 598. Si les pseudo-colonnes ne sont pas activées, le nombre maximal de colonnes que vous pouvez définir dans une seule table est 1 600.
Pour plus d'informations, consultez CREATE EXTERNAL TABLE.
-
- type_colonne
-
Type de données de la colonne ajoutée. Pour les colonnes CHAR et VARCHAR, vous pouvez utiliser le mot-clé MAX au lieu de déclarer une longueur maximale. MAX définit la longueur maximale sur 4 096 octets pour CHAR ou 65 535 octets pour VARCHAR. La taille maximum d'un objet GEOMETRY est de 1 048 447 octets.
Pour obtenir des informations sur les types de données pris en charge par Amazon Redshift, consultez Types de données.
- DEFAULT expr_défaut
-
Clause qui attribue une valeur de données par défaut à la colonne. Le type de données de expr_défaut doit correspondre au type de données de la colonne. La valeur DEFAULT doit être une expression exempte de variable. Les sous-requêtes, les références croisées aux autres colonnes de la table active et les fonctions définies par l'utilisateur ne sont pas autorisées.
expr_défaut est utilisé dans toute opération INSERT qui ne spécifie pas une valeur pour la colonne. Si aucune valeur par défaut n'est spécifiée, la valeur par défaut de la colonne est la valeur null.
Si une opération COPY rencontre un champ null dans une colonne qui a une valeur DEFAULT et une contrainte NOT NULL, la commande COPY insère la valeur de expr_défaut.
DEFAULT n'est pas pris en charge pour les tables externes.
- ENCODE encodage
-
Encodage de compression pour une colonne. Par défaut, Amazon Redshift gère automatiquement l'encodage de compression pour toutes les colonnes d'une table si vous ne spécifiez pas d'encodage de compression pour une colonne de la table ou si vous spécifiez l'option ENCODE AUTO pour la table.
Si vous spécifiez l'encodage de compression pour une colonne de la table ou si vous ne spécifiez pas l'option ENCODE AUTO pour la table, Amazon Redshift attribue automatiquement l'encodage de compression aux colonnes pour lesquelles vous ne spécifiez pas l'encodage de compression comme suit :
-
Toutes les colonnes de tables temporaires se voient attribuer une compression RAW par défaut.
-
Les colonnes qui sont définies comme des clés de tri se voient attribuer une compression RAW.
-
Les colonnes qui sont définies comme des types de données BOOLEAN, REAL, DOUBLE PRECISION ou GEOMETRY ou GEOGRAPHY se voient attribuer une compression RAW.
-
Les colonnes qui sont définies comme des types de données SMALLINT, INTEGER, BIGINT, DECIMAL, DATE, TIME, TIMETZ, TIMESTAMP ou TIMESTAMPTZ se voient attribuer une compression AZ64.
-
Les colonnes définies comme CHAR, VARCHAR ou VARBYTE sont affectées à la compression LZO.
Note
Si vous ne souhaitez pas qu'une colonne soit compressée, spécifiez explicitement un encodage RAW (brut).
Les encodages compression encodings suivants sont pris en charge :
-
AZ64
-
BYTEDICT
-
DELTA
-
DELTA32K
-
LZO
-
MOSTLY8
-
MOSTLY16
-
MOSTLY32
-
RAW (aucune compression)
-
RUNLENGTH
-
TEXT255
-
TEXT32K
-
ZSTD
ENCODE n'est pas pris en charge pour les tables externes.
-
- NOT NULL | NULL
-
NOT NULL spécifie que la colonne n'est pas autorisée à contenir des valeurs null. NULL, valeur par défaut, spécifie que la colonne accepte les valeurs null.
NOT NULL et NULL ne sont pas pris en charge pour les tables externes.
- DROP [ COLUMN ] nom_colonne
-
Nom de la colonne à supprimer de la table.
Vous ne pouvez pas supprimer la dernière colonne d'une table. Une table doit avoir au moins une colonne.
Vous ne pouvez pas supprimer une colonne qui est la clé de distribution (DISTKEY) ou une clé de tri (SORTKEY) de la table. Le comportement par défaut pour DROP COLUMN est RESTRICT si la colonne a des objets dépendants, tels qu'une vue, une clé primaire, une clé étrangère ou une restriction UNIQUE.
Les restrictions suivantes s'appliquent lors de la suppression d'une colonne d'une table externe :
-
Par ailleurs, vous ne pouvez pas supprimer une colonne d'une table externe si cette colonne est utilisée comme partition.
-
Vous ne pouvez pas supprimer une colonne d'une table externe définie à l'aide du format de fichier AVRO.
-
RESTRICT et CASCADE sont ignorés pour les tables externes.
Vous ne pouvez pas supprimer les colonnes de la table de politique référencée dans la définition de la politique à moins de supprimer ou de dissocier la stratégie. Cela s'applique également lorsque l'option CASCADE est spécifiée. Vous pouvez supprimer d'autres colonnes dans le tableau des politiques.
Pour de plus amples informations, veuillez consulter CREATE EXTERNAL TABLE.
-
- RESTRICT
-
Lorsque RESTRICT est utilisé avec DROP COLUMN, cela signifie que la colonne à supprimer n'est pas supprimée dans les cas suivants :
-
Si une vue définie référence la colonne en cours de suppression
-
Si une clé étrangère référence la colonne
-
Si la colonne fait partie d'une clé en plusieurs parties
RESTRICT ne peut pas être utilisée avec CASCADE.
RESTRICT et CASCADE sont ignorés pour les tables externes.
-
- CASCADE
-
Lorsqu'il est utilisé avec DROP COLUMN, supprime la colonne spécifiée et tout ce qui dépend de cette colonne. CASCADE ne peut pas être utilisée avec RESTRICT.
RESTRICT et CASCADE sont ignorés pour les tables externes.
Les options suivantes s'appliquent uniquement aux tables externes.
- SET LOCATION { 's3://compartiment/dossier/' | 's3://compartiment/fichier_manifeste' }
-
Chemin menant au dossier Amazon S3 qui contient les fichiers de données ou un fichier manifeste qui contient une liste de chemins d'objets Amazon S3. Les compartiments doivent se trouver dans la même région AWS que le cluster Amazon Redshift. Pour obtenir une liste des régions AWS prises en charge, consultez Considérations relatives à Amazon Redshift Spectrum. Pour plus d'informations sur l'utilisation d'un fichier manifeste, consultez l'option LOCATION dans la référence Paramètres CREATE EXTERNAL TABLE.
- SET FILE FORMAT format
-
Format des fichiers de données externes.
Les formats valides sont les suivants :
-
AVRO
-
PARQUET
-
RCFILE
-
SEQUENCEFILE
-
TEXTFILE
-
- SET TABLE PROPERTIES ( 'nom_propriété'='valeur_propriété')
-
Clause qui définit la définition de table pour des propriétés de table d'une table externe.
Note
Les propriétés de table sont sensibles à la casse.
- 'numRows'='nombre_lignes'
-
Propriété qui définit la valeur numRows de la définition de table. Afin de mettre à jour explicitement les statistiques d'une table externe, définissez la propriété numRows pour indiquer la taille de la table. Amazon Redshift n'analyse pas les tables externes pour générer les statistiques de table utilisées par l'optimiseur de requête afin de générer un plan de requête. Si des statistiques de table ne sont pas définies pour une table externe, Amazon Redshift génère un plan d'exécution de requête. Ce plan se base sur une hypothèse selon laquelle les tables externes sont les tables les plus volumineuses et les tables locales les tables les plus petites.
- 'skip.header.line.count'='nombre_lignes'
-
Propriété qui définit le nombre de lignes à ignorer au début de chaque fichier source.
- PARTITION ( colonne_partition=valeur_partition [, ...] SET LOCATION { 's3://compartiment/dossier' | 's3://compartiment/fichier_manifeste' }
-
Clause qui définit un nouvel emplacement pour une ou plusieurs colonnes de partition.
- ADD [ IF NOT EXISTS ] PARTITION ( partition_column=partition_value [, ...] ) LOCATION { 's3://bucket/folder' | 's3://bucket/manifest_file' } [, ... ]
-
Clause qui ajoute une ou plusieurs partitions. Vous pouvez spécifier plusieurs clauses PARTITION à l'aide d'une seule instruction ALTER TABLE … ADD.
Note
Si vous utilisez le catalogue AWS Glue, vous pouvez ajouter jusqu'à 100 partitions à l'aide d'une seule instruction ALTER TABLE.
La clause IF NOT EXISTS indique que si la partition spécifiée existe déjà, la commande ne doit effectuer aucun changement. Elle indique également que la commande doit renvoyer un message indiquant que la partition existe, plutôt que s'arrêter avec une erreur. Comme cette clause est utile à l'écriture de scripts, ce script n'échoue pas si ALTER TABLE tente d'ajouter une partition qui existe déjà.
- DROP PARTITION (colonne_partition=valeur_partition [, ...] )
-
Clause qui supprime la partition spécifiée. La suppression d'une partition modifie uniquement les métadonnées des tables externes. Ceci n'a aucun impact sur les données sur Amazon S3.
- ROW LEVEL SECURITY { ON | OFF }
Clause qui active ou désactive la sécurité au niveau des lignes pour une table.
Lorsque la sécurité au niveau des lignes est activée pour une table, vous pouvez lire uniquement les lignes auxquelles la politique de sécurité au niveau des lignes vous autorise à accéder. Si aucune politique ne vous accorde l'accès à la table, vous ne pouvez pas voir les lignes de la table. Pour de plus amples informations, veuillez consulter Sécurité de niveau ligne.
- FOR DATASHARES
Clause qui détermine si une table est protégée par RLS sur les unités de partage des données. Par défaut, une table protégée par RLS est également protégée par RLS sur les unités de partage des données.
Exemples
Les exemples suivants montrent comment utiliser la commande ALTER TABLE.