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 SELECT query in tabelle esterne esistenti su un catalogo esterno, ad esempio for AWS Glue o un metastore Apache Hive. AWS Lake Formation Usa lo stesso ruolo AWS Identity and Access Management (IAM) usato per il CREATE EXTERNAL SCHEMA comando 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 partizionate, INSERT (tabella esterna) scrive i dati nella posizione Amazon S3 in base alla chiave di partizione specificata nella tabella. Inoltre, registra automaticamente le nuove partizioni nel catalogo esterno al termine dell'operazione. INSERT
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 della SELECT query 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 trovarsi alla fine della SELECT query, nello stesso ordine in cui sono state definite nel CREATE EXTERNAL TABLE comando. I nomi delle colonne non devono necessariamente corrispondere.
In alcuni casi, potresti voler eseguire il comando INSERT (tabella esterna) su un AWS Glue Data Catalog o un metastore Hive. Nel caso di AWS Glue, il IAM ruolo 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 IAM ruolo diventa il proprietario della nuova tabella Lake Formation. Questo IAM ruolo deve avere almeno le seguenti autorizzazioni:
-
SELECT,INSERT, UPDATE autorizzazione 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
.
Considerate quanto segue quando eseguite il comando INSERT (tabella esterna):
-
Tabelle esterne che hanno un formato diverso PARQUET o che 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 questi valori, esegui il ALTER TABLE SET TABLE PROPERTIES comando.
-
La proprietà della tabella numRows '' viene aggiornata automaticamente verso la fine dell'INSERToperazione. La proprietà della tabella deve essere già definita o aggiunta alla tabella se non è stata creata dall'operazione CREATE EXTERNAL TABLE AS.
-
La LIMIT clausola non è supportata nella SELECT query esterna. Utilizzate invece una clausola annidata. LIMIT
-
Puoi usare la STL_UNLOAD_LOG tabella per tenere traccia dei file che sono stati scritti su Amazon S3 da ogni operazione INSERT (tabella esterna).
Amazon Redshift supporta solo la crittografia standard Amazon S3 INSERT per (tabella esterna).
INSERT(tabella esterna) esempi
L'esempio seguente inserisce i risultati dell'SELECTistruzione nella tabella esterna.
INSERT INTO spectrum.lineitem SELECT * FROM local_lineitem;
L'esempio seguente inserisce i risultati dell'SELECTistruzione in una tabella esterna partizionata utilizzando il partizionamento statico. Le colonne delle partizioni sono codificate nell'istruzione. SELECT Le colonne delle partizioni devono trovarsi alla fine della query.
INSERT INTO spectrum.customer SELECT name, age, gender, 'May', 28 FROM local_customer;
L'esempio seguente inserisce i risultati dell'SELECTistruzione 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;