INSERT - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

INSERT

Inserisce nuove righe in una tabella. Puoi inserire una singola riga con la sintassi VALUES, più righe con la sintassi VALUES o una o più righe definite dai risultati di una query (INSERT INTO...SELECT).

Nota

Consigliamo l'uso del comando COPY per caricare grandi quantità di dati. L'utilizzo di singole istruzioni INSERT per popolare una tabella potrebbe essere eccessivamente lento. In alternativa, se i dati esistono già in altre tabelle di database Amazon Redshift, utilizzare INSERT INTO SELECT o CREATE TABLE AS per migliorare le prestazioni. Per ulteriori informazioni sull'utilizzo del comando COPY per caricare le tabelle, vedi Caricamento dei dati.

Nota

Le dimensioni massime per una istruzione SQL è di 16 MB.

Sintassi

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

Parametri

table_name

Tabella temporanea o persistente. Solo il proprietario della tabella o un utente con il privilegio INSERT sulla tabella può inserire le righe. Se utilizzi la clausola query per inserire le righe, devi avere il privilegio SELECT sulle tabelle denominate nella query.

Nota

Utilizza INSERT (tabella esterna) per inserire i risultati di una query SELECT nelle tabelle esistenti nel catalogo esterno. Per ulteriori informazioni, consulta INSERT (tabella esterna).

column

Puoi inserire i valori in una o più colonne della tabella. Puoi elencare i nomi delle colonne di destinazione in qualsiasi ordine. Se non specifichi un elenco di colonne, i valori da inserire devono corrispondere alle colonne della tabella nell'ordine in cui sono stati dichiarati nell'istruzione CREATE TABLE. Se il numero di valori da inserire è inferiore al numero di colonne nella tabella, vengono caricate le prime n colonne.

Il valore predefinito dichiarato o un valore nullo viene caricato in ogni colonna non elencata (implicitamente o esplicitamente) nell'istruzione INSERT.

DEFAULT VALUES

Se alle colonne della tabella sono stati assegnati i valori predefiniti al momento della creazione della tabella, utilizza queste parole chiave per inserire una riga costituita interamente da valori predefiniti. Se le colonne non hanno valori predefiniti, in quelle colonne vengono inseriti i valori null. Se una delle colonne è dichiarata NOT NULL, l'istruzione INSERT restituisce un errore.

VALUES

Utilizza questa parola chiave per inserire una o più righe, con ogni riga composta da uno o più valori. L'elenco VALUES per ogni riga deve essere allineato all'elenco delle colonne. Per inserire più righe, utilizza una virgola come delimitatore tra ciascun elenco di espressioni. Non ripetere la parola chiave VALUES. Tutti gli elenchi VALUES per un'istruzione INSERT a più righe devono contenere lo stesso numero di valori.

espressione

Un singolo valore o un'espressione che valuta un singolo valore. Ogni valore deve essere compatibile con il tipo di dati della colonna in cui viene inserito. Se possibile, un valore il cui tipo di dati non corrisponde al tipo di dati dichiarato della colonna viene automaticamente convertito in un tipo di dati compatibile. Ad esempio:

  • Un valore decimale 1.1 è inserito in una colonna INT come 1.

  • Un valore decimale 100.8976 è inserito in una colonna DEC(5,2) come 100.90.

Puoi convertire esplicitamente un valore in un tipo di dati compatibile includendo la sintassi del cast di tipo nell'espressione. Ad esempio, se la colonna COL1 nella tabella T1 è una colonna CHAR (3):

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

L'istruzione inserisce il valore Inc nella colonna.

Per un'istruzione INSERT VALUES a riga singola, puoi utilizzare una sottoquery scalare come espressione. Il risultato della sottoquery viene inserito nella colonna appropriata.

Nota

Le sottoquery non sono supportate come espressioni per le istruzioni INSERT VALUES a più righe.

DEFAULT

Usa questa parola chiave per inserire il valore predefinito per una colonna, come definito al momento della creazione della tabella. Se non esiste un valore predefinito per una colonna, viene inserito un valore nullo. Non puoi inserire un valore predefinito in una colonna con un vincolo NOT NULL se tale colonna non ha un valore predefinito esplicito assegnato nell'istruzione CREATE TABLE.

query

Inserisci una o più righe nella tabella definendo qualsiasi query. Tutte le righe prodotte dalla query vengono inserite nella tabella. La query deve restituire un elenco di colonne compatibile con le colonne della tabella, ma i nomi delle colonne non devono corrispondere.

Note per l'utilizzo

Nota

Consigliamo l'uso del comando COPY per caricare grandi quantità di dati. L'utilizzo di singole istruzioni INSERT per popolare una tabella potrebbe essere eccessivamente lento. In alternativa, se i dati esistono già in altre tabelle di database Amazon Redshift, utilizzare INSERT INTO SELECT o CREATE TABLE AS per migliorare le prestazioni. Per ulteriori informazioni sull'utilizzo del comando COPY per caricare le tabelle, vedi Caricamento dei dati.

Il formato dei dati per i valori inseriti deve corrispondere al formato dei dati specificato dalla definizione CREATE TABLE.

Dopo aver inserito un numero elevato di nuove righe in una tabella:

  • Applica l'operazione di vacuum alla tabella per recuperare spazio di memorizzazione e riordinare le righe.

  • Analizza la tabella per aggiornare le statistiche del pianificatore di query.

Quando i valori vengono inseriti nelle colonne DECIMAL e superano la scala specificata, i valori caricati vengono arrotondati all'occorrenza. Per esempio, se un valore di 20.259 viene inserito in una colonna DECIMAL(8,2) il valore che viene memorizzato è 20.26.

Puoi inserire in una colonna GENERATED BY DEFAULT AS IDENTITY. Puoi aggiornare colonne definite come GENERATED BY DEFAULT AS IDENTITY con i valori forniti. Per ulteriori informazioni, consulta GENERATED BY DEFAULT AS IDENTITY.