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à.
Scarica il risultato di una query in uno o più file di testo, JSON o Apache Parquet in Amazon S3 tramite la crittografia lato server di Amazon S3 (SSE-S3). Puoi anche specificare la crittografia lato server con una chiave AWS Key Management Service (SSE-KMS) oppure la crittografia lato client con una chiave gestita dal cliente (CSE-CMK).
Per impostazione predefinita, il formato del file scaricato è testo delimitato da pipe (|
).
È possibile gestire la dimensione dei file su Amazon S3 e, per estensione, il numero di file, impostando il parametro MAXFILESIZE. Assicurati che gli intervalli IP S3 siano aggiunti all'elenco di indirizzi consentiti. Per ulteriori informazioni sugli intervalli IP S3 richiesti, consulta Isolamento di rete.
È possibile scaricare il risultato di una query di Amazon Redshift sul proprio data lake Amazon S3 in Apache Parquet, un formato di archiviazione a colonne aperte per l'analisi particolarmente efficiente. Il formato Parquet è fino a 2 volte più veloce a scaricare e consuma fino a 6 volte meno spazio di archiviazione in Amazon S3 rispetto ai formati di testo. Ciò consente di salvare la trasformazione e l'arricchimento dei dati eseguita in Amazon S3 nel data lake Amazon S3 in un formato aperto. Puoi quindi analizzare i tuoi dati con Redshift Spectrum e altri AWS servizi come Amazon Athena, Amazon EMR e Amazon AI. SageMaker
Per ulteriori informazioni e scenari di esempio sull'utilizzo del comando UNLOAD, consulta Scaricamento dei dati in Amazon Redshift.
Privilegi e autorizzazioni richiesti
Affinché il comando UNLOAD abbia esito positivo, è necessario almeno il privilegio SELECT sui dati nel database, insieme all'autorizzazione per scrivere nella posizione Amazon S3. Per informazioni sulle autorizzazioni di accesso alle AWS risorse per il comando UNLOAD, consulta. Autorizzazioni per accedere ad altre risorse AWS
Per applicare le autorizzazioni con privilegi minimi, segui questi consigli per concedere le autorizzazioni solo se necessario all'utente che esegue il comando.
L'utente deve disporre del privilegio SELECT sui dati. Per informazioni su come limitare i privilegi del database, vedere. GRANT
L'utente deve essere autorizzato ad assumere il ruolo IAM per scrivere nel bucket Amazon S3 del tuo. Account AWS Per limitare l'accesso all'assunzione di un ruolo da parte di un utente del database, consulta Restricting access to IAM roles nella Amazon Redshift Management Guide.
L'utente deve accedere al bucket Amazon S3. Per limitare le autorizzazioni utilizzando una policy sui bucket di Amazon S3, consulta le politiche Bucket per Amazon S3 nella Guida per l'utente di Amazon Simple Storage Service.
Sintassi
UNLOAD ('select-statement') TO 's3://object-path/name-prefix' authorization [ option, ...] where authorization is IAM_ROLE { default | 'arn:aws:iam::
<Account AWS-id-1>
:role/<role-name>
[,arn:aws:iam::<Account AWS-id-2>
:role/<role-name>
][,...]' } where option is | [ FORMAT [ AS ] ] CSV | PARQUET | JSON | PARTITION BY ( column_name [, ... ] ) [ INCLUDE ] | MANIFEST [ VERBOSE ] | HEADER | DELIMITER [ AS ] 'delimiter-char' | FIXEDWIDTH [ AS ] 'fixedwidth-spec' | ENCRYPTED [ AUTO ] | BZIP2 | GZIP | ZSTD | ADDQUOTES | NULL [ AS ] 'null-string' | ESCAPE | ALLOWOVERWRITE | CLEANPATH | PARALLEL [ { ON | TRUE } | { OFF | FALSE } ] | MAXFILESIZE [AS] max-size [ MB | GB ] | ROWGROUPSIZE [AS] size [ MB | GB ] | REGION [AS] 'aws-region' } | EXTENSION 'extension-name'
Parametri
- ('select-statement')
-
Query SELECT. I risultati della query vengono scaricati. Nella maggior parte dei casi, vale la pena scaricare i dati nell'ordine ordinato specificando una clausola ORDER BY nella query. Questo approccio risparmia il tempo richiesto per ordinare i dati quando vengono ricaricati.
La query deve essere racchiusa tra virgolette singole, come mostrato di seguito:
('select * from venue order by venueid')
Nota
Se la query contiene virgolette (ad esempio per racchiudere valori letterali), inserire il valore letterale tra due set di virgolette singole. È inoltre necessario racchiudere la query tra virgolette singole:
('select * from venue where venuestate=''NV''')
- TO 's3://object-path/name-prefix'
-
Il percorso completo, incluso il nome del bucket, nella posizione su Amazon S3 dove Amazon Redshift scrive gli oggetti del file di output, incluso il file manifest se è specificato MANIFEST. Ai nomi degli oggetti viene anteposto name-prefix. Se si utilizza
PARTITION BY
, viene aggiunta automaticamente una barra alla fine del valore name-prefix, se necessario. Per maggiore sicurezza, UNLOAD si collega ad Amazon S3 utilizzando una connessione HTTPS. Per impostazione predefinita, UNLOAD scrive uno o più file per sezione. UNLOAD aggiunge un numero di sezioni e un numero di parte al prefisso del nome specificato come segue:
.<object-path>
/<name-prefix>
<slice-number>
_part_<part-number>
Se viene specificato MANIFEST, il file manifest viene scritto come segue:
.<object_path>
/<name_prefix>
manifestSe PARALLEL è specificato OFF, i file di dati vengono scritti come segue:
.<object_path>
/<name_prefix>
<part-number>
UNLOAD crea automaticamente file crittografati usando la crittografia lato server (SSE) Amazon S3, incluso il file manifest se viene utilizzato MANIFEST. Il comando COPY legge automaticamente i file crittografati sul lato server durante l'operazione di caricamento. È possibile scaricare in modo trasparente i file crittografati sul lato server dal bucket utilizzando la console di Amazon S3 o l'API. Per ulteriori informazioni, consultare Protezione dei dati con la crittografia lato server.
Per usare la crittografia lato client di Amazon S3, specificare l'opzione ENCRYPTED.
Importante
REGION è obbligatorio quando il bucket Amazon S3 non si trova nella stessa Regione AWS del database Amazon Redshift.
- authorization
-
Il comando UNLOAD necessita l'autorizzazione per scrivere dati in Amazon S3. Il comando UNLOAD utilizza gli stessi parametri usati dal comando COPY per l'autorizzazione. Per ulteriori informazioni, consultare Parametri di autorizzazione nel riferimento della sintassi del comando COPY.
- IAM_ROLE {default | 'arn:aws:iam: :role/ '
<Account AWS-id-1>
<role-name>
-
Utilizzare la parola chiave predefinita per fare in modo che Amazon Redshift utilizzi il ruolo IAM impostato come predefinito e associato al cluster quando viene eseguito il comando UNLOAD.
L'Amazon Resource Name (ARN) per un ruolo IAM utilizzato dal cluster per l'autenticazione e l'autorizzazione. Se specifichi IAM_ROLE, non è possibile utilizzare ACCESS_KEY_ID e SECRET_ACCESS_KEY, SESSION_TOKEN o CREDENTIALS. IAM_ROLE può essere concatenato. Per ulteriori informazioni, consulta Concatenazione di ruoli IAM nella Guida alla gestione di Amazon Redshift.
- [ FORMAT [AS] ] CSV | PARQUET | JSON
-
Le parole chiave per specificare il formato di scarico che sovrascrive il formato predefinito.
Scarica in un file di testo in formato CSV utilizzando una virgola (,) come delimitatore predefinito. Se un campo contiene delimitatori, virgolette doppie, caratteri newline o ritorni a capo, il campo nel file scaricato è racchiuso tra virgolette doppie. A una virgoletta doppia all'interno di un campo dati viene aggiunta un'ulteriore virgoletta doppia. Quando vengono scaricate zero righe, Amazon Redshift potrebbe scrivere oggetti Amazon S3 vuoti.
Nel caso di PARQUET, viene scaricata in un file in formato Apache Parquet versione 1.0. Per impostazione predefinita, ogni gruppo di righe viene compresso mediante la compressione SNAPPY. Per ulteriori informazioni sul formato Apache Parquet, consultare Parquet
. Nel caso di JSON, scarica in un file JSON con ogni riga contenente un oggetto JSON, che rappresenta un record completo nel risultato della query. Amazon Redshift supporta la scrittura di JSON nidificati quando il risultato della query contiene colonne SUPER. Per creare un oggetto JSON valido, il nome di ogni colonna della query deve essere univoco. Nel file JSON, i valori booleani vengono scaricati come
t
of
e i valori NULL vengono scaricati comenull
. Quando vengono scaricate zero righe, Amazon Redshift non scrive oggetti Amazon S3 vuoti.Le parole chiave FORMAT e AS sono facoltative. Non puoi usare CSV con ESCAPE, FIXEDWIDTH o ADDQUOTES. Non è possibile utilizzare PARQUET con DELIMITER, FIXEDWIDTH, ADDQUOTES, ESCAPE, NULL AS, HEADER, GZIP o ZSTD. BZIP2 PARQUET con ENCRYPTED è supportato solo con la crittografia lato server con una chiave (SSE-KMS). AWS Key Management Service Non è possibile utilizzare JSON con DELIMITER, HEADER, FIXEDWIDTH, ADDQUOTES, ESCAPE o NULL AS.
- PARTITION BY ( column_name [, ... ] ) [INCLUDE]
-
Specifica le chiavi di partizione per l'operazione di scaricamento. UNLOAD suddivide automaticamente i file di output in cartelle di partizione in base ai valori chiave di partizione, secondo la convenzione Apache Hive. Ad esempio, un file Parquet che appartiene all'anno di partizione 2019 e al mese di settembre ha il seguente prefisso:
s3://amzn-s3-demo-bucket/my_prefix/year=2019/month=September/000.parquet
.Il valore per column_name deve essere una colonna nei risultati della query che vengono scaricati.
Se si specifica PARTITION BY con l'opzione INCLUDE, le colonne delle partizioni non vengono rimosse dai file scaricati.
Amazon Redshift non supporta letterali stringa nelle clausole PARTITION BY.
- MANIFEST [ VERBOSE ]
-
Crea un file manifest che elenca esplicitamente i dettagli per dati creati dal processo UNLOAD. Il manifest è un file di testo in formato JSON che elenca l'URL di ciascun file scritto in Amazon S3.
Se viene specificato MANIFEST con l'opzione VERBOSE, il manifest include i seguenti dettagli:
-
I nomi della colonna e i tipi di dati e per i tipi di dati CHAR, VARCHAR o NUMERIC le dimensioni di ciascuna colonna. Per i tipi di dati CHAR e VARCHAR, la dimensione è la lunghezza. Per un tipo di dati DECIMAL o NUMERIC, le dimensioni sono la precisione e la scalabilità.
-
Numero di righe scaricate in ciascun file. Se è specificata l'opzione HEADER, il numero di righe include la riga dell'intestazione.
-
Le dimensioni totali del file di tutti i file scaricati e il numero totale di righe scaricate su tutti i file. Se è specificata l'opzione HEADER, il numero di righe include le righe dell'intestazione.
-
L'autore. L'autore è sempre "Amazon Redshift".
Puoi specificare VERBOSE solo dopo MANIFEST.
Il file manifest è scritto nello stesso prefisso del percorso Amazon S3 come file scaricati nel formato
<object_path_prefix>manifest
. Ad esempio, se UNLOAD specifica il prefisso del percorso di Amazon S3 's3://amzn-s3-demo-bucket/venue_
', il percorso del file manifest sarà 's3://amzn-s3-demo-bucket/venue_manifest
'. -
- HEADER
-
Aggiunge una riga di intestazione che contiene i nomi delle colonne nella parte superiore di ogni file output. Anche le opzioni di trasformazione del testo, come CSV, DELIMITER, ADDQUOTES ed ESCAPE, si applicano alla riga di intestazione. Non è possibile utilizzare HEADER con FIXEDWIDTH.
- DELIMITER AS 'delimiter_character'
-
Specifica un singolo carattere ASCII utilizzato per separare i campi del file di output, ad esempio un carattere pipe ( | ), una virgola ( , ) o una tabulazione ( \t ). Il delimitatore predefinito per i file di testo è un carattere pipe. Il delimitatore predefinito per i file CSV è una virgola. La parola chiave AS è facoltativa. Non è possibile utilizzare DELIMITER con FIXEDWIDTH. Se i dati contengono il carattere delimitatore, è necessario specificare l'opzione ESCAPE per evitare il delimitatore o utilizzare ADDQUOTES per racchiudere i dati tra virgolette doppie. In alternativa, specifica un delimitatore non contenuto nei dati.
- FIXEDWIDTH 'fixedwidth_spec'
-
Scarica i dati in un file in cui ogni larghezza di colonna è fissa, invece di essere separate da un delimitatore. La stringa fixedwidth_spec specifica il numero di colonne e la larghezza delle colonne. La parola chiave AS è facoltativa. Poiché FIXEDWIDTH non tronca i dati, la specifica per ogni colonna nell'istruzione UNLOAD deve essere lunga almeno quanto la lunghezza della voce più lunga per quella colonna. Di seguito è indicato il formato di fixedwidth_spec:
'colID1:colWidth1,colID2:colWidth2, ...'
Non è possibile utilizzare FIXEDWIDTH con DELIMITER o HEADER.
- ENCRYPTED [AUTO]
-
Specifica che i file di output in Amazon S3 saranno crittografati usando la crittografia lato server o la crittografia lato client di Amazon S3. Se viene specificato MANIFEST, anche il file manifest viene crittografato. Per ulteriori informazioni, consulta Scaricamento di file di dati crittografati. Se non specifichi il parametro ENCRYPTED, UNLOAD crea automaticamente file crittografati utilizzando la crittografia lato server di Amazon S3 AWS con chiavi di crittografia gestite (SSE-S3).
Per ENCRYPTED, potresti voler scaricare su Amazon S3 utilizzando la crittografia lato server con AWS KMS una chiave (SSE-KMS). In tal caso, utilizza il parametro KMS_KEY_ID per fornire l'ID della chiave. Non puoi usare il parametro CREDENTIALS con il parametro KMS_KEY_ID. Se esegui un comando UNLOAD per i dati utilizzando KMS_KEY_ID, puoi eseguire un'operazione COPY per gli stessi dati senza specificare una chiave.
Per scaricare in Amazon S3 utilizzando la crittografia lato client con una chiave simmetrica fornita dal cliente fornisce la chiave in due modi. Per fornire la chiave, utilizza il parametro MASTER_SYMMETRIC_KEY o la parte
master_symmetric_key
di una stringa di credenziali CREDENTIALS. Se scarichi i dati utilizzando una chiave simmetrica master, assicurati di fornire la stessa chiave quando esegui un'operazione COPY per i dati crittografati.UNLOAD non supporta la crittografia lato server di Amazon S3 con una chiave fornita dal cliente (SSE-C).
Se viene utilizzato ENCRYPTED AUTO, il comando UNLOAD recupera la chiave di AWS KMS crittografia predefinita sulla proprietà del bucket Amazon S3 di destinazione e crittografa i file scritti su Amazon S3 con la chiave. AWS KMS Se il bucket non dispone della chiave di AWS KMS crittografia predefinita, UNLOAD crea automaticamente file crittografati utilizzando la crittografia lato server di Amazon Redshift AWS con chiavi di crittografia gestite (SSE-S3). Non è possibile utilizzare questa opzione con KMS_KEY_ID, MASTER_SYMMETRIC_KEY o CREDENTIALS contenente master_symmetric_key.
- KMS_KEY_ID 'key-id'
-
Speciifica l'ID della chiave per una chiave AWS Key Management Service (AWS KMS) da utilizzare per crittografare i file di dati su Amazon S3. Per ulteriori informazioni, consulta What is? AWS Key Management Service Se specifichi KMS_KEY_ID, devi specificare anche il parametro ENCRYPTED. Se specifichi KMS_KEY_ID, non puoi autenticare usando il parametro CREDENTIALS. Utilizza invece IAM_ROLE o ACCESS_KEY_ID and SECRET_ACCESS_KEY.
- MASTER_SYMMETRIC_KEY 'root_key'
-
La chiave simmetrica master da utilizzare per crittografare i file di dati in Amazon S3. Se specifichi il parametro MASTER_SYMMETRIC_KEY, devi anche specificare il parametro ENCRYPTED. Non è possibile utilizzare MASTER_SYMMETRIC_KEY con il parametro CREDENTIALS. Per ulteriori informazioni, consulta Caricamento di file di dati crittografati da Amazon S3.
- BZIP2
-
Scarica i dati in uno o più file compressi con bzip2 per sezione. A ogni file risultante viene aggiunta l'estensione
.bz2
. - GZIP
-
Scarica i dati in uno o più file compressi con gzip per sezione. A ogni file risultante viene aggiunta l'estensione
.gz
. - ZSTD
-
Scarica i dati in uno o più file compressi con Zstandard per sezione. A ogni file risultante viene aggiunta l'estensione
.zst
. - ADDQUOTES
-
Mettere le virgolette attorno a ciascun campo dati scaricato, in modo che Amazon Redshift possa scaricare i valori dei dati che contengono il delimitatore stesso. Ad esempio, se il delimitatore è una virgola, puoi scaricare e ricaricare i seguenti dati:
"1","Hello, World"
Senza le virgolette aggiunte, la stringa
Hello, World
verrebbe analizzata come due campi separati.Alcuni formati di output non supportano ADDQUOTES.
Se usi ADDQUOTES, devi specificare REMOVEQUOTES nel parametro COPY se ricarichi i dati.
- NULL AS 'null-string'
-
Specifica una stringa che rappresenta un valore null nei file scaricato. Se si utilizza questa opzione, tutti i file di output contengono la stringa specificata al posto di qualsiasi valore null trovato nei dati selezionati. Se questa opzione non è specificata, i valori null vengono scaricati come:
-
Stringhe a lunghezza zero per output delimitati
-
Stringhe di spazi vuoti per output a larghezza fissa
Se viene specificata una stringa null per uno scaricamento a larghezza fissa e la larghezza di una colonna di output è inferiore alla larghezza della stringa null, si verifica il seguente comportamento:
-
Un campo vuoto è l'output per le colonne non di caratteri
-
Viene restituito un errore per le colonne di caratteri
A differenza di altri tipi di dati in cui una stringa definita dall'utente rappresenta un valore nullo, Amazon Redshift esporta le colonne di dati SUPER utilizzando il formato JSON e li rappresenta come null come determinato dal formato JSON. Di conseguenza, le colonne di dati SUPER ignorano l'opzione NULL [AS] utilizzata nei comandi UNLOAD.
-
- ESCAPE
-
Per le colonne CHAR e VARCHAR in file scaricati delimitati, un carattere di escape (
\
) viene inserito prima di ogni occorrenza dei seguenti caratteri:-
Avanzamento riga:
\n
-
Ritorno a capo:
\r
-
Il carattere delimitatore specificato per i dati scaricati.
-
Il carattere di escape:
\
-
Il carattere virgoletta:
"
o'
(se nel comando UNLOAD sono specificati entrambi, ESCAPE e ADDQUOTES).
Importante
Se hai caricato i dati utilizzando un comando COPY con l'opzione ESCAPE, è necessario specificare anche l'opzione ESCAPE con il comando UNLOAD per generare il file di output reciproco. Allo stesso modo, se utilizzi UNLOAD usando l'opzione ESCAPE, è necessario usare ESCAPE quando effettui un COPY sugli stessi dati.
-
- ALLOWOVERWRITE
-
Per impostazione predefinita, UNLOAD ha esito negativo se trova i file che potrebbe sovrascrivere. Se è specificato ALLOWOVERWRITE, UNLOAD sovrascrive i file esistenti, incluso il file manifest.
- CLEANPATH
-
L'opzione CLEANPATH rimuove i file esistenti che si trovano nel percorso Amazon S3 specificato nella clausola TO prima di scaricare i file nella posizione specificata.
Se si include la clausola PARTITION BY, i file esistenti vengono rimossi solo dalle cartelle delle partizioni per ricevere i nuovi file generati dall'operazione UNLOAD.
È necessario disporre dell'autorizzazione
s3:DeleteObject
sul bucket Amazon S3. Per ulteriori informazioni, consultare Policy e autorizzazioni in Amazon S3 nella Guida per l'utente di Amazon Simple Storage Service. I file rimossi utilizzando l'opzione CLEANPATH vengono eliminati in modo definitivo e non possono essere recuperati. Se il bucket Amazon S3 di destinazione ha il controllo delle versioni abilitato, UNLOAD con l'opzione CLEANPATH non rimuove le versioni precedenti dei file.Non è possibile specificare l'opzione CLEANPATH se si specifica l'opzione ALLOWOVERWRITE.
- PARALLEL
-
Per impostazione predefinita, UNLOAD scrive i dati in parallelo in più file, in base al numero di sezioni nel cluster. L'opzione predefinita è ON o TRUE. Se PARALLEL è OFF o FALSE, UNLOAD scrive in uno o più file di dati in serie, ordinati in modo assoluto in base alla clausola ORDER BY, se utilizzata. Le dimensioni massime per un file di dati sono di 6,2 GB. Ad esempio, se scarichi 13,4 GB di dati, UNLOAD crea i seguenti tre file.
s3://amzn-s3-demo-bucket/key000 6.2 GB s3://amzn-s3-demo-bucket/key001 6.2 GB s3://amzn-s3-demo-bucket/key002 1.0 GB
Nota
Il comando UNLOAD è progettato per usare l'elaborazione parallela. Nella maggior parte dei casi, è consigliabile lasciare abilitata l'opzione PARALLEL, in particolare se i file vengono usati per caricare le tabelle usando un comando COPY.
- MAXFILESIZE [AS] max-size [ MB | GB ]
-
Specificare la dimensione massima dei file creati da UNLOAD in Amazon S3. Specifica un valore decimale compreso tra 5 MB e 6,2 GB. La parola chiave AS è facoltativa. L'unità predefinita è MB. Se MAXFILESIZE non è specificato, la dimensione massima del file predefinita è 6,2 GB. MAXFILESIZE non influisce sulle dimensioni del file manifest, se utilizzato.
- ROWGROUPSIZE [AS] [MB | GB]
-
Specifica le dimensioni dei gruppi di righe. La scelta di dimensioni maggiori può ridurre il numero di gruppi di righe, riducendo la quantità di comunicazioni di rete. Specificare un valore intero compreso tra 32 MB e 128 MB. La parola chiave AS è facoltativa. L'unità predefinita è MB.
Se non è specificato ROWGROUPSIZE, la dimensione predefinita è 32 MB. Per utilizzare questo parametro, il formato di archiviazione deve essere Parquet e il tipo di nodo deve essere ra3.4xlarge, ra3.16xlarge o dc2.8xlarge.
- REGION [AS] 'aws-region'
-
Speciifica Regione AWS dove si trova il bucket Amazon S3 di destinazione. REGION è necessario per UNLOAD su un bucket Amazon S3 che non si trova nello Regione AWS stesso database Amazon Redshift.
Il valore per aws_region deve corrispondere a una AWS regione elencata nella tabella delle regioni e degli endpoint di Amazon Redshift nel. Riferimenti generali di AWS
Per impostazione predefinita, UNLOAD presuppone che il bucket Amazon S3 di destinazione si trovi nello stesso database Amazon Regione AWS Redshift.
- EXTENSION 'extension-name'
-
Specifica l'estensione del file da aggiungere ai nomi dei file scaricati. Amazon Redshift non esegue alcuna convalida, quindi è necessario verificare che l'estensione del file specificata sia corretta. Se specifichi un metodo di compressione senza fornire un'estensione, Amazon Redshift aggiunge solo l'estensione del metodo di compressione al nome del file. Se non fornisci alcuna estensione e non specifichi un metodo di compressione, Amazon Redshift non aggiunge nulla al nome del file.
Note per l'utilizzo
Utilizzo di ESCAPE per tutte le operazioni UNLOAD di testo delimitato
Quando specifichi UNLOAD usando un delimitatore, i dati possono includere il delimitatore o uno qualsiasi dei caratteri elencati nella descrizione dell'opzione ESCAPE. In questo caso, devi usare l'opzione ESCAPE con l'istruzione UNLOAD. Se non usi l'opzione ESCAPE con UNLOAD, le successive operazioni COPY che utilizzano i dati scaricati potrebbero non riuscire.
Importante
Si consiglia di utilizzare sempre ESCAPE sia con l'istruzione UNLOAD sia con quella COPY. A meno che tu non sia sicuro che i tuoi dati non contengano delimitatori o altri caratteri per cui si potrebbe dover utilizzare il carattere di escape.
Perdita della precisione a virgola mobile
Potresti riscontrare la perdita di precisione per i dati a virgola mobile che vengono successivamente scaricati e ricaricati.
Clausola Limit
La query SELECT non può utilizzare una clausola LIMIT nell'istruzione SELECT esterna. Ad esempio, la seguente istruzione UNLOAD non riesce.
unload ('select * from venue limit 10')
to 's3://amzn-s3-demo-bucket/venue_pipe_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
Utilizza invece una clausola LIMIT nidificata, come nell'esempio seguente.
unload ('select * from venue where venueid in
(select venueid from venue order by venueid desc limit 10)')
to 's3://amzn-s3-demo-bucket/venue_pipe_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
In alternativa, è possibile popolare una tabella usando SELECT…INTO o CREATE TABLE AS usando una clausola LIMIT, quindi scaricare da quella tabella.
Scaricare una colonna definita come tipo dati GEOMETRY
È possibile scaricare colonne di tipo GEOMETRY in formato testo o CSV. Non è possibile scaricare dati di tipo GEOMETRY con l'opzione FIXEDWIDTH
. I dati vengono scaricati nella forma esadecimale del formato Extended Well-Known Binary (EWKB). Se la dimensione dei dati in formato EWKB è superiore a 4 MB, l'utente riceve l'avviso del fatto che i dati non possono essere successivamente caricati in una tabella.
Scarico del tipo di dati HLLSKETCH
È possibile scaricare colonne di tipo HLLSKETCH solo in formato testo o CSV. Non è possibile scaricare dati di tipo HLLSKETCH con l'opzione FIXEDWIDTH
. I dati vengono scaricati nel formato Base64 per schizzi densi o nel formato JSON per HyperLogLog schizzi sparsi. HyperLogLog Per ulteriori informazioni, consulta HyperLogLog funzioni.
Nell'esempio seguente viene esportata una tabella contenente colonne HLLSKETCH in un file.
CREATE TABLE a_table(an_int INT, b_int INT);
INSERT INTO a_table VALUES (1,1), (2,1), (3,1), (4,1), (1,2), (2,2), (3,2), (4,2), (5,2), (6,2);
CREATE TABLE hll_table (sketch HLLSKETCH);
INSERT INTO hll_table select hll_create_sketch(an_int) from a_table group by b_int;
UNLOAD ('select * from hll_table') TO 's3://amzn-s3-demo-bucket/unload/'
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' NULL AS 'null' ALLOWOVERWRITE CSV;
Scaricare una colonna definita come tipo dati VARBYTE
È possibile scaricare colonne di tipo VARBYTE in formato testo o CSV. I dati vengono scaricati nel formato esadecimale. Non è possibile scaricare i dati VARBYTE con l'opzione FIXEDWIDTH
. L'opzione ADDQUOTES
di UNLOAD in un CSV non è supportata. Una colonna VARBYTE non può essere utilizzata come colonna di partizione.
Clausola FORMAT AS PARQUET
Tieni presenti queste considerazioni quando utilizzi FORMAT AS PARQUET:
-
Lo scaricamento in Parquet non utilizza la compressione a livello di file. Ogni gruppo di righe viene compresso con SNAPPY.
-
Se MAXFILESIZE non è specificato, la dimensione massima del file predefinita è 6,2 GB. È possibile utilizzare MAXFILESIZE per specificare una dimensione file di 5 MB-6,2 GB. La dimensione effettiva del file è approssimata quando il file viene scritto, quindi potrebbe non corrispondere esattamente al numero specificato.
Per massimizzare le prestazioni di scansione, Amazon Redshift prova a creare file Parquet contenenti gruppi di righe da 32 MB di dimensioni uguali. Il valore MAXFILESIZE specificato viene arrotondato automaticamente al multiplo più vicino di 32 MB. Ad esempio, se si specifica 200 MB per MAXFILESIZE, ogni file Parquet scaricato è di circa 192 MB (gruppo di righe da 32 MB x 6 = 192 MB).
-
Se una colonna utilizza il formato di dati TIMESTAMPTZ, vengono scaricati solo i valori di timestamp. Le informazioni sul fuso orario non vengono scaricate.
-
Non specificare i prefissi dei nomi file che iniziano con caratteri di sottolineatura (_) o punto (.). Redshift Spectrum tratta i file che iniziano con questi caratteri come file nascosti e li ignora.
Clausola PARTITION BY
Tieni presenti queste considerazioni quando utilizzi PARTITION BY:
-
Le colonne delle partizioni non sono incluse nel file di output.
-
Assicurati di includere colonne di partizione nella query SELECT utilizzata nell'istruzione UNLOAD. È possibile specificare un numero qualsiasi di colonne di partizione nel comando UNLOAD. Esiste tuttavia una limitazione che prevede che almeno una colonna non di partizione faccia parte del file.
-
Se il valore della chiave di partizione è null, Amazon Redshift scarica automaticamente i dati in una partizione di default chiamata
partition_column=__HIVE_DEFAULT_PARTITION__
. -
Il comando UNLOAD non effettua chiamate a un catalogo esterno. Per registrare le nuove partizioni in modo che facciano parte della tabella esterna esistente, utilizza un ALTER TABLE separato... Comando ADD PARTITION... Oppure è possibile eseguire un comando CREATE EXTERNAL TABLE per registrare i dati scaricati come una nuova tabella esterna. Puoi anche utilizzare un crawler per popolare il tuo Data Catalog AWS Glue . Per ulteriori informazioni, consultare Definizione di crawler nella Guida per gli sviluppatori di AWS Glue .
-
Se si utilizza l'opzione MANIFEST, Amazon Redshift genera un solo file manifest nella cartella Amazon S3 principale.
-
I tipi di dati di colonna che è possibile utilizzare come chiave di partizione sono SMALLINT, INTEGER, BIGINT, DECIMAL, REAL, BOOLEAN, CHAR, VARCHAR, DATE e TIMESTAMP.
Utilizzo del privilegio ASSUMEROLE per concedere l'accesso a un ruolo IAM per le operazioni UNLOAD
Per fornire l'accesso per utenti e gruppi specifici a un ruolo IAM per le operazioni UNLOAD, un utente con privilegi avanzati può concedere il privilegio ASSUMEROLE su un ruolo IAM a utenti e gruppi. Per informazioni, consultare GRANT.
UNLOAD non supporta gli alias degli Access Point Amazon S3
È possibile utilizzare gli alias degli Access Point Amazon S3 con il comando UNLOAD.
Esempi
Per alcuni esempi che illustrano come utilizzare il comando UNLOAD, consulta Esempi di UNLOAD.