Seleziona le tue preferenze relative ai cookie

Utilizziamo cookie essenziali e strumenti simili necessari per fornire il nostro sito e i nostri servizi. Utilizziamo i cookie prestazionali per raccogliere statistiche anonime in modo da poter capire come i clienti utilizzano il nostro sito e apportare miglioramenti. I cookie essenziali non possono essere disattivati, ma puoi fare clic su \"Personalizza\" o \"Rifiuta\" per rifiutare i cookie prestazionali.

Se sei d'accordo, AWS e le terze parti approvate utilizzeranno i cookie anche per fornire utili funzionalità del sito, ricordare le tue preferenze e visualizzare contenuti pertinenti, inclusa la pubblicità pertinente. Per continuare senza accettare questi cookie, fai clic su \"Continua\" o \"Rifiuta\". Per effettuare scelte più dettagliate o saperne di più, fai clic su \"Personalizza\".

INSERT (tabella esterna) - 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à.

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 (tabella esterna)

Inserisce i risultati di una query SELECT in tabelle esterne esistenti su un catalogo esterno AWS Glue, AWS Lake Formation ad esempio for o un metastore Apache Hive. Utilizza lo stesso ruolo AWS Identity and Access Management (IAM) utilizzato per il comando CREATE EXTERNAL SCHEMA per interagire con cataloghi esterni e Amazon S3.

Per le tabelle non partizionate, il comando INSERT (tabella esterna) scrive i dati nella posizione Amazon S3 definita nella tabella, in base alle proprietà della tabella e al formato di file specificati.

Per le tabelle con partizioni, INSERT (tabella esterna) scrive i dati nella posizione Amazon S3 in base alla chiave di partizione specificata nella tabella. Al termine dell'operazione INSERT, inoltre, registra automaticamente le nuove partizioni nel catalogo esterno.

Non è possibile eseguire INSERT (tabella esterna) all'interno di un blocco di transazione (BEGIN ... END). Per ulteriori informazioni sulle transazioni, consultare Isolamento serializzabile.

Sintassi

INSERT INTO external_schema.table_name { select_statement }

Parametri

external_schema.table_name

Il nome di uno schema esterno e di una tabella esterna di destinazione esistenti in cui effettuare l'inserimento.

select_statement

Istruzione che inserisce una o più righe nella tabella esterna definendo qualsiasi query. Tutte le righe prodotte dalla query vengono scritte in Amazon S3 in formato testo o Parquet in base alla definizione della tabella. La query deve restituire un elenco di colonne compatibile con i tipi di dati delle colonne nella tabella esterna. Tuttavia, i nomi delle colonne non devono necessariamente corrispondere.

Note per l'utilizzo

Il numero di colonne nella query SELECT deve essere uguale alla somma delle colonne di dati e delle colonne di partizione. La posizione e il tipo di dati di ogni colonna di dati devono corrispondere a quelli della tabella esterna. La posizione delle colonne di partizione deve essere alla fine della query SELECT, nello stesso ordine in cui sono state definite nel comando CREATE EXTERNAL TABLE. I nomi delle colonne non devono necessariamente corrispondere.

In alcuni casi, è possibile eseguire il comando INSERT (tabella esterna) su un catalogo dati AWS Glue o un metastore Hive. Nel caso di AWS Glue, il ruolo IAM utilizzato per creare lo schema esterno deve disporre di autorizzazioni di lettura e scrittura su Amazon AWS Glue S3 e. Se utilizzi un AWS Lake Formation catalogo, questo ruolo IAM diventa il proprietario della nuova tabella Lake Formation. Questo ruolo IAM deve disporre almeno delle seguenti autorizzazioni:

  • Autorizzazione SELECT, INSERT, UPDATE sulla tabella esterna

  • Autorizzazione per la posizione dati sul percorso Amazon S3 della tabella esterna

Per garantire che i nomi file siano univoci, Amazon Redshift utilizza il seguente formato per il nome di ogni file caricato in Amazon S3 per impostazione predefinita.

<date>_<time>_<microseconds>_<query_id>_<slice-number>_part_<part-number>.<format>.

Un esempio è 20200303_004509_810669_1007_0001_part_00.parquet.

Quando si esegue il comando INSERT (tabella esterna), considerare quanto segue:

  • Le tabelle esterne con un formato diverso da PARQUET o TEXTFILE non sono supportate.

  • Questo comando supporta le proprietà esistenti della tabella come 'write.parallel', 'write.maxfilesize.mb', 'compression_type' e 'serialization.null.format'. Per aggiornare tali valori, eseguire il comando ALTER TABLE SET TABLE PROPERTIES.

  • La proprietà della tabella 'numRows' viene aggiornata automaticamente verso la fine dell'operazione INSERT. La proprietà della tabella deve essere definita o aggiunta alla tabella se già non è stata creata dall'operazione CREATE EXTERNAL TABLE AS.

  • La clausola LIMIT non è supportata nella query SELECT esterna. Usa invece una clausola LIMIT nidificata.

  • È possibile utilizzare la tabella STL_UNLOAD_LOG per tenere traccia dei file scritti su Amazon S3 da ogni operazione INSERT (tabella esterna).

  • Amazon Redshift supporta solo la crittografia standard Amazon S3 per INSERT (tabella esterna).

Esempi di INSERT (tabella esterna)

Nell'esempio seguente i risultati dell'istruzione SELECT vengono inseriti nella tabella esterna.

INSERT INTO spectrum.lineitem SELECT * FROM local_lineitem;

Nell'esempio seguente i risultati dell'istruzione SELECT vengono inseriti in una tabella esterna partizionata mediante il partizionamento statico. Le colonne di partizione nell'istruzione SELECT sono hardcoded. Le colonne delle partizioni devono trovarsi alla fine della query.

INSERT INTO spectrum.customer SELECT name, age, gender, 'May', 28 FROM local_customer;

Nell'esempio seguente i risultati dell'istruzione SELECT vengono inseriti in una tabella esterna partizionata utilizzando il partizionamento dinamico. Le colonne delle partizioni non sono hardcoded. I dati vengono aggiunti automaticamente alle cartelle delle partizioni esistenti o alle nuove cartelle se viene aggiunta una nuova partizione.

INSERT INTO spectrum.customer SELECT name, age, gender, month, day FROM local_customer;

Argomento successivo:

LOCK

Argomento precedente:

Esempi di INSERT
PrivacyCondizioni del sitoPreferenze cookie
© 2025, Amazon Web Services, Inc. o società affiliate. Tutti i diritti riservati.