INSERT - 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.

INSERT

Insère de nouvelles lignes dans une table. Vous pouvez insérer une seule ligne avec la syntaxe VALUES, plusieurs lignes avec la syntaxe VALUES, ou une ou plusieurs lignes définies par les résultats d’une requête (INSERT INTO...SELECT).

Note

Nous vous encourageons vivement à utiliser la commande COPY pour charger de grandes quantités de données. La lenteur liée à l’utilisation d’instructions INSERT pour remplir une table peut être prohibitive. Sinon, si vos données existent déjà dans d’autres tables de bases de données Amazon Redshift, utilisez INSERT INTO SELECT ou CREATE TABLE AS pour améliorer les performances. Pour plus d’informations sur l’utilisation de la commande COPY pour charger les tables, consultez Chargement des données.

Note

La taille maximale d’une instruction SQL est de 16 Mo.

Syntaxe

INSERT INTO table_name [ ( column [, ...] ) ] {DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ( { expression | DEFAULT } [, ...] ) [, ...] ] | query }

Paramètres

table_name

Table temporaire ou permanente. Seul le propriétaire de la table ou un utilisateur avec le privilège INSERT sur la table peut insérer des lignes. Si vous utilisez la clause query pour insérer des lignes, vous devez avoir le privilège SELECT sur les tables nommées de la requête.

Note

Utilisez INSERT (table externe) pour insérer les résultats d’une requête SELECT dans des tables existantes du catalogue externe. Pour plus d'informations, consultez INSERT (table externe).

column

Vous pouvez insérer des valeurs dans une ou plusieurs colonnes de la table. Vous pouvez afficher les noms de colonne cible dans n’importe quel ordre. Si vous ne spécifiez pas une liste de colonnes, les valeurs à insérer doivent correspondre aux Colonnes de la table, dans l’ordre dans lequel elles ont été déclarés dans l’instruction CREATE TABLE. Si le nombre de valeurs à insérer est inférieur au nombre de colonnes de la table, les n premières colonnes sont chargées.

La valeur par défaut déclaré ou une valeur null est chargée dans l’une des colonnes qui n’est pas répertoriée (implicitement ou explicitement) dans l’instruction INSERT.

DEFAULT VALUES

Si des valeurs par défaut ont été attribuées aux colonnes de la table lorsque la table a été créée, utilisez ces mots-clés pour insérer une ligne qui se compose entièrement de valeurs par défaut. Si aucun des colonnes n’a de valeurs par défaut, des valeurs null sont insérées dans ces colonnes. Si aucune des colonnes n’est déclarée NOT NULL, l’instruction INSERT renvoie une erreur.

VALUES

Utilisez ce mot-clé pour insérer une ou plusieurs lignes, chaque ligne consistant en une ou plusieurs valeurs. La liste VALUES de chaque ligne doit être alignée avec la liste des colonnes. Pour insérer plusieurs lignes, utilisez une virgule de séparation entre chaque liste d’expressions. Ne répétez pas le mot-clé VALUES. Toutes les listes VALUES d’une instruction INSERT à plusieurs lignes doivent contenir le même nombre de valeurs.

expression

Une expression ou valeur unique analysée comme valeur unique. Chaque valeur doit être compatible avec le type de données de la colonne où elle est insérée. Si possible, une valeur dont le type de données ne correspond pas au type de données déclaré de la colonne est automatiquement convertie en un type de données compatible. Par exemple :

  • Une valeur décimale 1.1 est insérée dans une colonne INT en tant que 1.

  • Une valeur décimale 100.8976 est insérée dans une colonne DEC(5,2) en tant que 100.90.

Vous pouvez convertir explicitement une valeur en un type de données compatible en incluant la syntaxe de cast de type dans l’expression. Par exemple, si la colonne COL1 de la table T1 est une colonne CHAR(3) :

insert into t1(col1) values('Incomplete'::char(3));

Cette instruction insère la valeur Inc dans la colonne.

Pour une instruction INSERT VALUES à une seule valeur, vous pouvez utiliser une sous-requête scalaire comme expression. Le résultat de la sous-requête est inséré dans la colonne appropriée.

Note

Les sous-requêtes ne sont pas prises en charge comme expressions pour les instructions INSERT VALUES à plusieurs lignes.

DEFAULT

Utilisez ce mot-clé pour insérer la valeur par défaut d’une colonne, comme défini lors de la création de la table. S’il n’existe aucune valeur par défaut pour une colonne, une valeur null est insérée. Vous ne pouvez pas insérer une valeur par défaut dans une colonne ayant une contrainte NOT NULL si cette colonne n’a pas une valeur par défaut explicite qui lui est attribuée dans l’instruction CREATE TABLE.

query

Insérez une ou plusieurs lignes dans la table en définissant une requête. Toutes les lignes que la requête produit sont insérées dans la table. La requête doit renvoyer une liste de colonnes compatible avec les colonnes de la table, mais les noms de colonnes n’ont pas à correspondre.

Notes d’utilisation

Note

Nous vous encourageons vivement à utiliser la commande COPY pour charger de grandes quantités de données. La lenteur liée à l’utilisation d’instructions INSERT pour remplir une table peut être prohibitive. Sinon, si vos données existent déjà dans d’autres tables de bases de données Amazon Redshift, utilisez INSERT INTO SELECT ou CREATE TABLE AS pour améliorer les performances. Pour plus d’informations sur l’utilisation de la commande COPY pour charger les tables, consultez Chargement des données.

Le format de données pour les valeurs insérées doit correspondre au format de données spécifié par la définition de CREATE TABLE.

Après l’insertion d’un grand nombre de nouvelles lignes dans une table :

  • Exécuter une opération VACUUM sur la table pour récupérer de l’espace de stockage et retrier les lignes.

  • Analysez la table pour mettre à jour les statistiques pour le planificateur de requête.

Lorsque les valeurs sont insérées dans des colonnes DECIMAL et qu’elles dépassent l’échelle spécifiée, les valeurs chargées sont arrondies le cas échéant. Par exemple, si la valeur 20.259 est insérée dans une colonne DECIMAL(8,2), la valeur est stockée sous la forme 20.26.

Vous pouvez insérer dans une colonne GENERATED BY DEFAULT AS IDENTITY. Vous pouvez mettre à jour des colonnes définies comme GENERATED BY DEFAULT AS IDENTITY avec des valeurs que vous fournissez. Pour plus d'informations, consultez GENERATED BY DEFAULT AS IDENTITY.