CREATE TABLE - Amazon Redshift

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

CREATE TABLE

Crée une nouvelle table dans la base de données actuelle. Vous définissez une liste de colonnes qui contiennent chacune des données d’un type distinct. Le propriétaire de la table est l'émetteur de la CREATE TABLE commande.

Privilèges requis

Les privilèges suivants sont requis pour CREATE TABLE :

  • Superuser

  • Utilisateurs ayant le CREATE TABLE privilège

Syntaxe

CREATE [ [LOCAL ] { TEMPORARY | TEMP } ] TABLE [ IF NOT EXISTS ] table_name ( { column_name data_type [column_attributes] [ column_constraints ] | table_constraints | LIKE parent_table [ { INCLUDING | EXCLUDING } DEFAULTS ] } [, ... ] ) [ BACKUP { YES | NO } ] [table_attributes] where column_attributes are: [ DEFAULT default_expr ] [ IDENTITY ( seed, step ) ] [ GENERATED BY DEFAULT AS IDENTITY ( seed, step ) ] [ ENCODE encoding ] [ DISTKEY ] [ SORTKEY ] [ COLLATE CASE_SENSITIVE | COLLATE CASE_INSENSITIVE ] and column_constraints are: [ { NOT NULL | NULL } ] [ { UNIQUE | PRIMARY KEY } ] [ REFERENCES reftable [ ( refcolumn ) ] ] and table_constraints are: [ UNIQUE ( column_name [, ... ] ) ] [ PRIMARY KEY ( column_name [, ... ] ) ] [ FOREIGN KEY (column_name [, ... ] ) REFERENCES reftable [ ( refcolumn ) ] and table_attributes are: [ DISTSTYLE { AUTO | EVEN | KEY | ALL } ] [ DISTKEY ( column_name ) ] [ [COMPOUND | INTERLEAVED ] SORTKEY ( column_name [,...]) | [ SORTKEY AUTO ] ] [ ENCODE AUTO ]

Paramètres

LOCAL

Facultatif. Même si ce mot-clé est accepté dans l’instruction, il n’a aucun effet dans Amazon Redshift.

TEMPORARY | TEMP

Mot-clé qui crée une table temporaire visible uniquement dans la séance en cours. La table temporaire est automatiquement supprimée à la fin de la séance dans laquelle elle a été créée. La table temporaire peut avoir le même nom qu’une table permanente. La table temporaire est créée dans un schéma distinct, propre à la séance. (Vous ne pouvez pas spécifier un nom pour ce schéma.) Comme ce schéma temporaire devient le premier schéma du chemin de recherche, la table temporaire a priorité sur la table permanente, sauf si vous qualifiez le nom de la table avec le nom du schéma pour accéder à la table permanente. Pour plus d’informations sur les schémas et les priorités, consultez search_path.

Note

Par défaut, les utilisateurs de la base de données sont autorisés à créer des tables temporaires grâce à leur appartenance automatique au PUBLIC groupe. Pour refuser ce privilège à un utilisateur, révoquez le TEMP privilège du PUBLIC groupe, puis accordez-le explicitement uniquement à des utilisateurs ou à des groupes d'utilisateurs spécifiques. TEMP

SI NOT EXISTS

Clause indiquant que si la table spécifiée existe déjà, la commande ne doit faire aucune modification et renvoyer un message selon lequel la table existe, plutôt que de s’arrêter avec une erreur. Notez que la table existante peut ne ressembler en rien à celle que vous avez créée ; seul le nom de la table est comparé.

Cette clause est utile lors de la création de scripts, afin que le script n'échoue pas s'il CREATE TABLE tente de créer une table qui existe déjà.

table_name

Nom de la table à créer.

Important

Si vous spécifiez un nom de table qui commence par « # », la table est créée comme table temporaire. Voici un exemple :

create table #newtable (id int);

Vous faites également référence à la table avec le « # ». Par exemple :

select * from #newtable;

La longueur maximale d’un nom de table est de 127 octets ; les noms plus longs sont tronqués à 127 octets. Vous pouvez utiliser UTF -8 caractères multioctets jusqu'à un maximum de quatre octets. Amazon Redshift applique un quota du nombre de tables par cluster et par type de nœud, y compris les tables temporaires définies par l’utilisateur et les tables temporaires créées par Amazon Redshift lors du traitement des requêtes ou de la maintenance du système. Le cas échéant, le nom de la table peut être qualifié avec le nom de la base de données et le nom du schéma. Dans l’exemple suivant, le nom de base de données est tickit, le nom du schéma public et le nom de la table test.

create table tickit.public.test (c1 int);

Si la base de données ou le schéma n’existe pas, la table n’est pas créée et l’instruction renvoie une erreur. Vous ne pouvez pas créer de tables ni de vues dans les bases de données système template0, template1, padb_harvest ou sys:internal.

Si un nom de schéma est donné, la nouvelle table est créée dans ce schéma (en supposant que le créateur ait accès au schéma). Le nom de la table doit être un nom unique pour ce schéma. Si aucun schéma n’est spécifié, la table est créée en utilisant le schéma de base de données actuel. Si vous créez une table temporaire, vous ne pouvez pas spécifier un nom de schéma, car les tables temporaires existent dans un schéma spécial.

Plusieurs tables temporaires de même nom peuvent exister en même temps dans la même base de données même si elles sont créées dans des séances distinctes, car les tables sont attribuées à des schémas différents. Pour plus d’informations sur les noms valides, consultez Noms et identificateurs.

column_name

Nom d’une colonne à créer dans la nouvelle table. La longueur maximale d’un nom de colonne est de 127 octets ; les noms plus longs sont tronqués à 127 octets. Vous pouvez utiliser UTF -8 caractères multioctets jusqu'à un maximum de quatre octets. Le nombre maximal de colonnes que vous pouvez définir dans une seule table est de 1 600. Pour plus d’informations sur les noms valides, consultez Noms et identificateurs.

Note

Si vous créez une grande table, veillez à ce que la liste de colonnes ne dépasse pas les limites de largeur de ligne pour les résultats intermédiaires pendant le traitement des charges et des requêtes. Pour plus d'informations, consultez Notes d’utilisation.

data_type

Type de données de la colonne en cours de création. Pour les VARCHAR colonnes CHAR et, vous pouvez utiliser le MAX mot clé au lieu de déclarer une longueur maximale. MAXdéfinit la longueur maximale à 4 096 octets pour CHAR ou 65 535 octets pour. VARCHAR La taille maximale d'un GEOMETRY objet 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.

DEFAULTexpr par 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 DEFAULT valeur doit être une expression sans 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.

L'expression default_expr est utilisée dans toute INSERT opération qui ne spécifie pas de 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 COPY opération avec une liste de colonnes définie omet une colonne contenant une DEFAULT valeur, la COPY commande insère la valeur de default_expr.

IDENTITY(graine, étape)

Clause qui indique que la colonne est une IDENTITY colonne. Une IDENTITY colonne contient des valeurs uniques générées automatiquement. Le type de données d'une IDENTITY colonne doit être INT ouBIGINT.

Lorsque vous ajoutez des lignes à l’aide d’une instruction INSERT ou INSERT INTO [tablename] VALUES(), ces valeurs commencent par la valeur spécifiée en tant que seed et sont incrémentées du nombre spécifié comme step.

Quand la table est chargée à l’aide d’une instruction INSERT INTO [tablename] SELECT * FROM ou COPY, les données sont chargées en parallèle et distribuées aux tranches de nœuds. Pour garantir que les valeurs d’identité sont uniques, Amazon Redshift ignore un certain nombre de valeurs lors de la création des valeurs d’identité. Les valeurs d’identité sont uniques, mais l’ordre ne correspond pas toujours à celui des fichiers source.

GENERATEDPAR DEFAULT AS IDENTITY (graine, étape)

Clause qui indique que la colonne est une IDENTITY colonne par défaut et vous permet d'attribuer automatiquement une valeur unique à la colonne. Le type de données d'une IDENTITY colonne doit être INT ouBIGINT. Lorsque vous ajoutez des lignes sans valeurs, ces valeurs commencent par la valeur spécifiée en tant que seed et s’incrémentent du nombre spécifié comme s step. Pour obtenir des informations sur la manière dont les valeurs sont générées, consultez IDENTITY.

De plusINSERT, pendantUPDATE, ou COPY vous pouvez fournir une valeur sans EXPLICIT _IDS. Amazon Redshift utilise cette valeur pour insérer dans la colonne d’identité au lieu d’utiliser la valeur générée par le système. La valeur peut être un doublon, une valeur inférieure au seed ou une valeur comprise entre les valeurs de step. Amazon Redshift ne vérifie pas si les valeurs de la colonne sont uniques. Le fait de fournir une valeur n’affecte pas la prochaine valeur générée par le système.

Note

Si vous avez besoin de valeurs uniques dans la colonne, n’ajoutez pas de valeur en double. À la place, ajoutez une valeur unique inférieure au seed ou comprise entre les valeurs de step.

Gardez à l’esprit ce qui suit au sujet des colonnes d’identité par défaut :

  • Les colonnes d'identité par défaut sont NOTNULL. NULLne peut pas être inséré.

  • Pour insérer une valeur générée dans une colonne d’identité par défaut, utilisez le mot-clé DEFAULT.

    INSERT INTO tablename (identity-column-name) VALUES (DEFAULT);
  • Le fait de remplacer des valeurs d’une colonne d’identité par défaut n’affecte pas la prochaine valeur générée.

  • Vous ne pouvez pas ajouter de colonne d'identité par défaut à l'ALTERTABLEADDCOLUMNinstruction.

  • Vous pouvez ajouter une colonne d'identité par défaut à l'ALTERTABLEAPPENDinstruction.

ENCODEencodage

Encodage de compression pour une colonne. ENCODEAUTOest la valeur par défaut pour les tables. Amazon Redshift gère automatiquement l’encodage de compression pour toutes les colonnes de la table. Si vous spécifiez le codage de compression pour une colonne du tableau, le tableau n'est plus défini sur ENCODEAUTO. Amazon Redshift ne gère plus automatiquement le codage de compression pour toutes les colonnes de la table. Vous pouvez spécifier l'ENCODEAUTOoption pour le tableau afin de permettre à Amazon Redshift de gérer automatiquement le codage de compression pour toutes les colonnes du tableau.

Pour les colonnes pour lesquelles vous ne spécifiez pas d’encodage de compression, Amazon Redshift affecte automatiquement un encodage de compression initial comme suit :

  • Toutes les colonnes des tables temporaires sont RAW compressées par défaut.

  • La RAW compression est affectée aux colonnes définies comme clés de tri.

  • La RAW compression est affectée aux colonnes définies comme BOOLEAN REAL DOUBLEPRECISION,GEOMETRY,, ou comme type de GEOGRAPHY données.

  • Colonnes définies commeSMALLINT,,,INTEGER,BIGINT,DECIMAL,DATE,TIME, TIMETZTIMESTAMP, ou TIMESTAMPTZ auxquelles une AZ64 compression est affectée.

  • Colonnes définies comme CHARVARCHAR, ou VARBYTE auxquelles une LZO compression est affectée.

Note

Si vous ne souhaitez pas qu'une colonne soit compressée, spécifiez explicitement le RAW codage.

Les encodages compression encodings suivants sont pris en charge :

  • AZ64

  • BYTEDICT

  • DELTA

  • DELTA32K

  • LZO

  • MOSTLY8

  • MOSTLY16

  • MOSTLY32

  • RAW(pas de compression)

  • RUNLENGTH

  • TEXT255

  • TEXT32K

  • ZSTD

DISTKEY

Mot-clé qui spécifie que la colonne est la clé de distribution de la table. Une seule colonne d’une table peut être la clé de distribution. Vous pouvez utiliser le DISTKEY mot clé après le nom d'une colonne ou dans le cadre de la définition de la table en utilisant la syntaxe DISTKEY (column_name). Les deux méthodes ont le même effet. Pour plus d'informations, consultez le DISTSTYLE paramètre plus loin dans cette rubrique.

Le type de données d'une colonne de clé de distribution peut être : BOOLEAN REAL DOUBLE PRECISION SMALLINTINTEGER,BIGINT,DECIMAL,DATE,TIME,TIMETZ,TIMESTAMP,,TIMESTAMPTZ,CHAR, ouVARCHAR.

SORTKEY

Mot-clé qui spécifie que la colonne est la clé de tri de la table. Lorsque les données sont chargées dans la table, les données sont triées sur une ou plusieurs colonnes désignées comme les clés de tri. Vous pouvez utiliser le SORTKEY mot clé après le nom d'une colonne pour spécifier une clé de tri à colonne unique, ou vous pouvez spécifier une ou plusieurs colonnes comme colonnes clés de tri pour la table en utilisant la syntaxe SORTKEY (column_name [,...]). Seules les clés de tri composées sont créées avec cette syntaxe.

Vous pouvez définir un maximum de 400 SORTKEY colonnes par table.

Le type de données d'une colonne clé de tri peut être : BOOLEAN REAL DOUBLE PRECISIONSMALLINT,INTEGER,BIGINT,DECIMAL,DATE,TIME,TIMETZ,TIMESTAMP,,TIMESTAMPTZ,CHAR, ouVARCHAR.

COLLATE CASE_SENSITIVE | COLLATE CASE_INSENSITIVE

Clause qui indique si la recherche ou la comparaison de chaînes dans la colonne est CASE _ SENSITIVE ou CASE _INSENSITIVE. La valeur par défaut est la même que la configuration actuelle de sensibilité à la casse de la base de données.

Pour rechercher les informations de classement de la base de données, utilisez la commande suivante :

SELECT db_collation(); db_collation ---------------- case_sensitive (1 row)
NOT NULL | NULL

NOTNULLindique que la colonne n'est pas autorisée à contenir des valeurs nulles. NULL, valeur par défaut, indique que la colonne accepte les valeurs nulles. IDENTITYles colonnes sont déclarées NOT NULL par défaut.

UNIQUE

Mot-clé qui spécifie que la colonne ne peut contenir que des valeurs uniques. Le comportement de la contrainte de table unique est identique à celui des contraintes de colonne, avec la capacité supplémentaire de s’étendre sur plusieurs colonnes. Pour définir une contrainte de table unique, utilisez la syntaxe UNIQUE (column_name [,...]).

Important

Les contraintes d’unicité ont une valeur informationnelle et ne sont pas appliquées par le système.

PRIMARY KEY

Mot-clé qui spécifie que la colonne est la clé primaire de la table. Seule une colonne peut être définie comme clé primaire à l’aide d’une définition de colonne. Pour définir une contrainte de table avec une clé primaire à colonnes multiples, utilisez la syntaxe PRIMARY KEY (column_name [,...]).

L’identification d’une colonne comme clé primaire fournit les métadonnées relatives à la conception du schéma. Une clé primaire implique que d’autres tables puissent se reposer sur cet ensemble de colonnes comme identificateur unique des lignes. Une clé primaire peut être spécifiée pour une table, que ce soit comme contrainte de colonne ou contrainte de table. La contrainte de clé primaire doit nommer un ensemble de colonnes différent des autres ensembles de colonnes nommés pour une contrainte unique définie pour la même table.

PRIMARYKEYles colonnes sont également définies comme NOTNULL.

Important

Les contraintes de clé primaire ont uniquement un but informatif. Elles ne sont pas appliquées par le système, mais sont utilisées par le planificateur.

References table_réf [ ( colonne_réf ) ]

Clause qui spécifie une contrainte de clé étrangère, ce qui implique que la colonne contienne uniquement des valeurs qui correspondent à celles de la colonne référencée d’une ligne de la table référencée. Les colonnes référencées doivent être les colonnes d’une contrainte de clé unique ou de clé primaire de la table référencée.

Important

Les contraintes de clé étrangère ont un but informatif uniquement. Elles ne sont pas appliquées par le système, mais sont utilisées par le planificateur.

LIKEparent_table [{INCLUDING|EXCLUDING}] DEFAULTS

Clause qui spécifie une table existante à partir de laquelle la nouvelle table copie automatiquement les noms de colonnes, les types de données et NOT NULL les contraintes. La nouvelle table et la table parent sont découplées et toutes les modifications apportées à la table parent ne sont pas appliquées à la nouvelle table. Les expressions par défaut pour les définitions de colonnes copiées ne sont copiées que si elles INCLUDING DEFAULTS sont spécifiées. Le comportement par défaut consiste à exclure les expressions par défaut, de telle sorte que toutes les colonnes de la nouvelle table aient une valeurs null par défaut.

Les tables créées avec l'LIKEoption n'héritent pas des contraintes de clé primaire et étrangère. Le style de distributionBACKUP, les clés de tri et les NULL propriétés sont hérités par LIKE les tables, mais vous ne pouvez pas les définir explicitement dans le CREATETABLE... LIKEdéclaration.

BACKUP{YES| NON}

Clause qui spécifie si la table doit être incluse dans les instantanés de cluster automatiques et manuels.

Pour les tables, telles que les tables intermédiaires, qui ne contiennent pas de données critiques, spécifiez BACKUP NON pour réduire le temps de traitement lors de la création de snapshots et de la restauration à partir de snapshots et pour réduire l'espace de stockage sur Amazon Simple Storage Service. Le paramètre BACKUP NO n'a aucun effet sur la réplication automatique des données vers les autres nœuds du cluster, de sorte que les tables pour lesquelles la BACKUP valeur NO est spécifiée sont restaurées en cas de défaillance d'un nœud. La valeur par défaut est BACKUPYES.

DISTSTYLE { AUTO | EVEN | KEY | ALL }

Mot-clé qui définit le style de distribution des données pour l’ensemble de la table. Amazon Redshift répartit les lignes d’une table entre les nœuds de calcul selon le style de distribution spécifié pour la table. La valeur par défaut estAUTO.

Le style de distribution que vous sélectionnez pour les tables affecte les performances globales de votre base de données. Pour plus d'informations, consultez Utilisation des styles de distribution de données. Les styles de distribution possibles sont les suivants :

  • AUTO: Amazon Redshift attribue un style de distribution optimal en fonction des données du tableau. Par exemple, si un style de AUTO distribution est spécifié, Amazon Redshift attribue initialement le style de ALL distribution à une petite table. Lorsque le tableau s'agrandit, Amazon Redshift peut modifier le style de distribution en KEY choisissant la clé primaire (ou une colonne de la clé primaire composite) comme. DISTKEY Si le tableau s'agrandit et qu'aucune des colonnes ne convientDISTKEY, Amazon Redshift change le style de distribution en. EVEN La modification de style de distribution se produit en arrière-plan et son impact sur les requêtes des utilisateurs est minimal.

    Pour afficher le style de distribution appliqué à une table, interrogez la table du catalogue du CLASS système PG_. Pour de plus amples informations, veuillez consulter Affichage des styles de distribution.

  • EVEN: les données du tableau sont réparties uniformément sur les nœuds d'un cluster dans le cadre d'une distribution circulaire. IDsLes lignes sont utilisées pour déterminer la distribution, et approximativement le même nombre de lignes est distribué à chaque nœud.

  • KEY: Les données sont distribuées par les valeurs de la DISTKEY colonne. Lorsque vous définissez les colonnes de jointure des tables de jointure comme clés de distribution, les lignes de jointure des deux tables sont colocalisées sur les nœuds de calcul. Lorsque les données sont colocalisées, l’optimiseur peut effectuer les jointures plus efficacement. Si vous le spécifiez DISTSTYLEKEY, vous devez nommer une DISTKEY colonne, soit pour la table, soit dans le cadre de la définition de colonne. Pour plus d'informations, consultez le DISTKEY paramètre plus haut dans cette rubrique.

  • ALL: une copie de la table complète est distribuée à chaque nœud. Ce style de distribution garantit que toutes les lignes obligatoires pour une jointure sont disponibles sur chaque nœud, mais il multiplie les besoins de stockage et augmente les temps de charge et de maintenance de la table. ALLla distribution peut améliorer le temps d'exécution lorsqu'elle est utilisée avec certaines tables de dimensions pour lesquelles KEY la distribution n'est pas appropriée, mais les améliorations de performances doivent être mises en balance avec les coûts de maintenance.

DISTKEY(nom_colonne)

Contrainte qui spécifie la colonne à utiliser comme clé de distribution de la table. Vous pouvez utiliser le DISTKEY mot clé après le nom d'une colonne ou dans le cadre de la définition de la table, en utilisant la syntaxe DISTKEY (column_name). Les deux méthodes ont le même effet. Pour plus d'informations, consultez le DISTSTYLE paramètre plus haut dans cette rubrique.

[COMPOUND|INTERLEAVED] SORTKEY (nom_colonne [,...]) | [] SORTKEY AUTO

Spécifie une ou plusieurs clés de tri pour la table. Lorsque les données sont chargées dans la table, les données sont triées sur les colonnes désignées comme clés de tri. Vous pouvez utiliser le SORTKEY mot clé après le nom d'une colonne pour spécifier une clé de tri à colonne unique, ou vous pouvez spécifier une ou plusieurs colonnes comme colonnes clés de tri pour le tableau en utilisant la SORTKEY (column_name [ , ... ] ) syntaxe.

Vous pouvez éventuellement spécifier COMPOUND ou INTERLEAVED trier le style. Si vous spécifiez SORTKEY avec des colonnes, la valeur par défaut estCOMPOUND. Pour de plus amples informations, veuillez consulter Utilisation des clés de tri.

Si vous ne spécifiez aucune option de clé de tri, la valeur par défaut estAUTO.

Vous pouvez définir un maximum de 400 COMPOUND SORTKEY colonnes ou 8 INTERLEAVED SORTKEY colonnes par tableau.

AUTO

Spécifie qu’Amazon Redshift attribue une clé de tri optimale en fonction des données de la table. Par exemple, si AUTO une clé de tri est spécifiée, Amazon Redshift n'attribue initialement aucune clé de tri à une table. Si Amazon Redshift détermine qu’une clé de tri améliorera les performances des requêtes, Amazon Redshift peut modifier la clé de tri de votre table. Le tri de la table est effectué par tri automatique de la table. Pour plus d'informations, consultez Tri automatique des tables.

Amazon Redshift ne modifie pas les tables qui possèdent des clés de tri ou de distribution existantes, À une exception près, si une table possède une clé de distribution qui n'a jamais été utilisée dans unJOIN, la clé peut être modifiée si Amazon Redshift détermine qu'il existe une meilleure clé.

Pour afficher la clé de tri d'une table, interrogez la vue du catalogue INFO du système SVV TABLE _ _. Pour de plus amples informations, veuillez consulter SVV_TABLE_INFO. Pour consulter les recommandations d'Amazon Redshift Advisor relatives aux tables, interrogez la vue du catalogue du RECOMMENDATIONS système SVV ALTER TABLE _ _ _. Pour de plus amples informations, veuillez consulter SVV_ALTER_TABLE_RECOMMENDATIONS. Pour consulter les actions entreprises par Amazon Redshift, interrogez la vue du catalogue du ACTION système SVL AUTO _ WORKER _ _. Pour de plus amples informations, veuillez consulter SVL_AUTO_WORKER_ACTION.

COMPOUND

Spécifie que les données sont triées à l’aide d’une clé composée, constituée de toutes les colonnes affichées, dans leur ordre d’apparition. Une clé de tri composée est surtout utile lorsqu’une requête analyse les lignes selon l’ordre des colonnes de tri. Les avantages en termes de performances d’un tri avec une clé composée diminuent lorsque les requêtes reposent sur des colonnes de tri secondaires. Vous pouvez définir un maximum de 400 COMPOUND SORTKEY colonnes par table.

INTERLEAVED

Spécifie que les données sont triées à l’aide d’une clé de tri entrelacée. Un maximum de huit colonnes peut être spécifié pour une clé de tri entrelacée.

Comme un tri entrelacé confère un poids égal à chaque colonne, ou sous-ensemble de colonnes, de la clé de tri, les requêtes ne dépendent pas de l’ordre des colonnes de la clé de tri. Quand une requête utilise une ou plusieurs colonnes de tri secondaires, le tri entrelacé améliore les performances des requêtes de façon significative. Le tri entrelacé entraîne un léger coût de traitement pour les opérations de chargement de données et les opérations VACUUM.

Important

N’utilisez pas de clé de tri entrelacée sur les colonnes qui contiennent des attributs qui augmentent de façon monotone, tels que les colonnes d’identité, les dates ou les horodatages.

ENCODE AUTO

Permet à Amazon Redshift d’ajuster automatiquement le type d’encodage pour toutes les colonnes de la table afin d’optimiser les performances des requêtes. ENCODEAUTOpréserve les types de codage initiaux que vous avez spécifiés lors de la création 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. ENCODEAUTOest la valeur par défaut si vous ne spécifiez aucun type de codage sur aucune colonne de la table.

UNIQUE(nom_colonne [,...])

Contrainte qui spécifie qu’un groupe d’une ou de plusieurs colonnes d’une table ne peut contenir que des valeurs uniques. Le comportement de la contrainte de table unique est identique à celui des contraintes de colonne, avec la capacité supplémentaire de s’étendre sur plusieurs colonnes. Dans le contexte des contraintes uniques, les valeurs null ne sont pas considérées comme égales. Chaque contrainte de table unique doit nommer un ensemble de colonnes différent de l’ensemble de colonnes nommées par une autre contrainte de clé unique ou de clé primaire définie pour la table.

Important

Les contraintes d’unicité ont une valeur informationnelle et ne sont pas appliquées par le système.

PRIMARYKEY(nom_colonne [,...])

Contrainte qui spécifie qu’une colonne ou un nombre de colonnes d’une table ne peut contenir que des valeurs non null (non dupliquées) uniques. L’identification d’un ensemble de colonnes comme clé primaire fournit aussi les métadonnées relatives à la conception du schéma. Une clé primaire implique que d’autres tables puissent se reposer sur cet ensemble de colonnes comme identificateur unique des lignes. Une clé primaire peut être spécifiée pour une table, que ce soit comme contrainte de colonne ou contrainte de table. La contrainte de clé primaire doit nommer un ensemble de colonnes différent des autres ensembles de colonnes nommés pour une contrainte unique définie pour la même table.

Important

Les contraintes de clé primaire ont uniquement un but informatif. Elles ne sont pas appliquées par le système, mais sont utilisées par le planificateur.

FOREIGNKEY(nom_colonne [,...]) REFERENCES reftable [(colonne de référence)]

Contrainte qui spécifie une contrainte de clé étrangère, laquelle nécessite qu’un groupe d’une ou de plusieurs colonnes de la nouvelle table ne doit contenir que des valeurs qui correspondent à des valeurs des colonnes référencées d’une ligne de la table référencée. Si colonne_réf est omis, la clé primaire de table_réf est utilisée. Les colonnes référencées doivent être les colonnes d’une contrainte de clé unique ou de clé primaire de la table référencée.

Important

Les contraintes de clé étrangère ont un but informatif uniquement. Elles ne sont pas appliquées par le système, mais sont utilisées par le planificateur.

Notes d’utilisation

Les contraintes d’unicité, de clé primaire et de clé externe sont uniquement informatives ; elles ne sont pas appliquées par Amazon Redshift lorsque vous remplissez une table. Par exemple, si vous insérez des données dans une table avec des dépendances, l’insertion peut réussir même si elle enfreint la contrainte. Néanmoins, les clés primaires et les clés étrangères sont utilisées comme conseils de planification et doivent être déclarées si votre ETL processus ou un autre processus de votre application garantit leur intégrité. Pour plus d’informations sur la manière de supprimer une table avec des dépendances, consultez DROP TABLE.

Limites et quotas

Tenez compte des limites suivantes lorsque vous créez une table.

  • Il existe une limite pour le nombre maximal de tables dans un cluster par type de nœud. Pour plus d’informations, consultez Limites dans le Guide de gestion Amazon Redshift.

  • Le nombre maximal de caractères pour un nom de table est 127.

  • Le nombre maximal de colonnes que vous pouvez définir dans une seule table est de 1 600.

  • Le nombre maximum de SORTKEY colonnes que vous pouvez définir dans une seule table est de 400.

Résumé des paramètres de niveau colonne et des paramètres de niveau table

Plusieurs attributs et paramètres peuvent être définis au niveau colonne ou au niveau table. Dans certains cas, la définition d’un attribut ou d’une contrainte au niveau colonne ou au niveau table a le même effet. Dans d’autres cas, elles produisent des résultats différents.

La liste suivante résume les paramètres de niveau colonne et de niveau de la table :

DISTKEY

Il n’y a pas de différence effective que la définition soit au niveau colonne ou au niveau table.

S'il DISTKEY est défini, que ce soit au niveau de la colonne ou au niveau de la table, DISTSTYLE il doit être défini sur KEY ou ne pas être défini du tout. DISTSTYLEne peut être réglé qu'au niveau de la table.

SORTKEY

S'il est défini au niveau de la colonne, SORTKEY il doit s'agir d'une seule colonne. Si elle SORTKEY est définie au niveau de la table, une ou plusieurs colonnes peuvent constituer une clé de tri composite ou entrelacée.

COLLATE CASE_SENSITIVE | COLLATE CASE_INSENSITIVE

Amazon Redshift ne prend pas en charge la modification de la configuration de sensibilité à la casse pour une colonne. Lorsque vous ajoutez une nouvelle colonne à la table, Amazon Redshift utilise la valeur par défaut pour la sensibilité à la casse. Amazon Redshift ne prend pas en charge le mot COLLATE clé lors de l'ajout d'une nouvelle colonne.

Pour obtenir des informations sur la création de bases de données à l'aide du classement de bases de données, consultez CREATE DATABASE.

Pour plus d'informations sur COLLATE cette fonction, consultezCOLLATEfonction.

UNIQUE

Au niveau de la colonne, une ou plusieurs touches peuvent être définies sur UNIQUE ; la UNIQUE contrainte s'applique à chaque colonne individuellement. Si elle UNIQUE est définie au niveau de la table, une ou plusieurs colonnes peuvent constituer une UNIQUE contrainte composite.

PRIMARY KEY

S'il est défini au niveau de la colonne, PRIMARY KEY il doit s'agir d'une seule colonne. Si elle PRIMARY KEY est définie au niveau de la table, une ou plusieurs colonnes peuvent constituer une clé primaire composite.

FOREIGN KEY

Il n'y a aucune différence d'effet selon qu'il FOREIGN KEY est défini au niveau de la colonne ou au niveau de la table. Au niveau colonne, la syntaxe est simplement REFERENCES table_réf [ ( colonne_réf )].

Distribution des données entrantes

Lorsque le schéma de distribution de hachage des données entrantes correspond à celui de la table cible, aucune distribution physique des données n’est réellement nécessaire lors du chargement des données. Par exemple, si une clé de distribution est définie pour la nouvelle table et que les données sont insérées à partir d’une autre table qui est distribuée sur la même colonne de clé, les données sont chargées en place, à l’aide des mêmes nœuds et tranches. Toutefois, si les tables source et cible sont toutes deux définies pour EVEN la distribution, les données sont redistribuées dans la table cible.

Tables larges

Il se peut que vous puissiez créer une table très large mais que vous ne puissiez pas effectuer de traitement de requêtes, telles que INSERT des SELECT instructions, sur la table. La largeur maximale d'une table avec des colonnes à largeur fixe, par exempleCHAR, est de 64 Ko à 1 (ou 65 535 octets). Si une table inclut des VARCHAR colonnes, la largeur déclarée de la table peut être supérieure sans renvoyer d'erreur, car les VARCHARS colonnes ne contribuent pas à la totalité de leur largeur déclarée à la limite de traitement des requêtes calculée. La limite effective de traitement des requêtes avec VARCHAR colonnes varie en fonction d'un certain nombre de facteurs.

Si une table est trop large pour l’insertion ou la sélection, vous recevez l’erreur suivante.

ERROR: 8001 DETAIL: The combined length of columns processed in the SQL statement exceeded the query-processing limit of 65535 characters (pid:7627)

Exemples

Pour des exemples illustrant comment utiliser la CREATE TABLE commande, consultez la Exemples rubrique.