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 VALUES syntaxe, plusieurs lignes avec la VALUES syntaxe ou une ou plusieurs lignes définies par les résultats d'une requête (INSERTINTO... SELECT).

Note

Nous vous encourageons vivement à utiliser la commande COPY pour charger de grandes quantités de données. L'utilisation d'INSERTinstructions individuelles pour remplir un tableau peut être d'une lenteur prohibitive. Sinon, si vos données existent déjà dans d'autres tables de base de données Amazon Redshift, utilisez INSERT INTO SELECT ou CREATETABLEEN TANT QUE pour améliorer les performances. Pour plus d'informations sur l'utilisation de la COPY commande pour charger des tables, consultezChargement de données dans Amazon Redshift.

Note

La taille maximale d'une SQL instruction 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 disposant de INSERT privilèges sur la table peut insérer des lignes. Si vous utilisez la clause query pour insérer des lignes, vous devez disposer de SELECT privilèges sur les tables nommées dans la requête.

Note

Utilisez INSERT (table externe) pour insérer les résultats d'une SELECT requête dans les tables existantes du catalogue externe. Pour de plus amples informations, veuillez consulter INSERT(table extérieure).

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 de liste de colonnes, les valeurs à insérer doivent correspondre aux colonnes du tableau dans l'ordre dans lequel elles ont été déclarées dans l'CREATETABLEinstruction. 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ée ou une valeur nulle est chargée dans toute colonne non répertoriée (implicitement ou explicitement) dans l'INSERTinstruction.

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 l'une des colonnes est déclarée NOTNULL, l'INSERTinstruction renvoie une erreur.

VALUES

Utilisez ce mot-clé pour insérer une ou plusieurs lignes, chaque ligne consistant en une ou plusieurs valeurs. La VALUES liste de chaque ligne doit être alignée sur 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 VALUES mot clé. Toutes les VALUES listes d'une INSERT instruction à 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 INT colonne sous forme 1 de.

  • Une valeur décimale 100.8976 est insérée dans une colonne DEC (5,2) sous forme de. 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 du tableau T1 est une CHAR (3) colonne :

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

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

Pour une INSERT VALUES instruction à ligne unique, 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 en tant qu'expressions pour les instructions à plusieurs lignes INSERTVALUES.

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 de valeur par défaut dans une colonne soumise à une NOT NULL contrainte si aucune valeur par défaut explicite n'est affectée à cette colonne dans l'CREATETABLEinstruction.

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. L'utilisation d'INSERTinstructions individuelles pour remplir un tableau peut être d'une lenteur prohibitive. Sinon, si vos données existent déjà dans d'autres tables de base de données Amazon Redshift, utilisez INSERT INTO SELECT ou CREATETABLEEN TANT QUE pour améliorer les performances. Pour plus d'informations sur l'utilisation de la COPY commande pour charger des tables, consultezChargement de données dans Amazon Redshift.

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

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 des valeurs sont insérées dans DECIMAL des colonnes et qu'elles dépassent l'échelle spécifiée, les valeurs chargées sont arrondies comme il convient. Par exemple, lorsqu'une valeur de 20.259 est insérée dans une colonne DECIMAL (8,2), la valeur stockée est20.26.

Vous pouvez insérer dans une IDENTITY colonne GENERATED BY DEFAULT AS. Vous pouvez mettre à jour les colonnes définies comme GENERATED BY DEFAULT AS IDENTITY avec les valeurs que vous fournissez. Pour de plus amples informations, veuillez consulter GENERATED BY DEFAULT AS IDENTITY.