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à.
Scrive i risultati delle query da un'istruzione SELECT
al formato di dati specificato. I formati supportati per UNLOAD
includono Apache ParquetORC, Apache Avro e. JSON CSVè l'unico formato di output supportato dal SELECT
comando Athena, ma è possibile utilizzare il UNLOAD
comando, che supporta diversi formati di output, per racchiudere la SELECT
query e riscriverne l'output in uno dei formati supportati. UNLOAD
Sebbene sia possibile utilizzare l'istruzione CREATE TABLE AS
(CTAS) per generare dati in formati diversi da quelliCSV, CTAS le istruzioni richiedono la creazione di una tabella in Athena. L'UNLOAD
istruzione è utile quando si desidera restituire i risultati di una SELECT
query in un CSV formato diverso ma non si desidera la tabella associata. Ad esempio, un'applicazione downstream potrebbe richiedere che i risultati di una SELECT
query siano in JSON formato e Parquet o ORC potrebbe fornire un vantaggio in termini di prestazioni rispetto CSV all'utilizzo dei risultati della SELECT
query per analisi aggiuntive.
Considerazioni e limitazioni
Quando utilizzi l'istruzione UNLOAD
in Athena, devi considerare quanto segue:
-
Nessun ordine globale dei file – I risultati
UNLOAD
vengono scritti in più file in parallelo. Se la querySELECT
nell'istruzioneUNLOAD
specifica un ordine, il contenuto di ogni file è in ordine ordinato, ma i file non sono ordinati l'uno rispetto all'altro. -
Dati orfani non eliminati — In caso di guasto, Athena non tenta di eliminare i dati orfani. Questo comportamento è lo stesso di quello delle
INSERT INTO
istruzioni CTAS and. -
Partizioni massime: Il numero massimo di partizioni che possono essere utilizzate con
UNLOAD
è 100. -
File manifest e metadati — Athena genera un file di metadati e un file manifesto di dati per ogni query
UNLOAD
. Il manifest tiene traccia dei file scritti dalla query. Entrambi i file vengono salvati nella posizione dei risultati della query Athena in Amazon S3. Per ulteriori informazioni, consulta Identifica i file di output delle query. -
Crittografia –
UNLOAD
vengono crittografati in base alla configurazione di crittografia utilizzata per Amazon S3. Per configurare la configurazione di crittografia per crittografare iUNLOAD
risultati, è possibile utilizzare il EncryptionConfiguration API. -
Istruzioni preparate –
UNLOAD
può essere utilizzato con istruzioni preparate. Per informazioni sulle istruzioni preparate in Athena, consulta Usa interrogazioni parametrizzate. -
Quote di servizio:
UNLOAD
utilizza le quote di DML query. Per informazioni sulle quote, consulta Service Quotas (Quote di Servizio). -
Proprietario previsto del bucket: l'impostazione relativa al proprietario previsto del bucket non si applica al percorso del bucket Amazon S3 di destinazione specificato nella query
UNLOAD
. L'impostazione attesa relativa al proprietario del bucket si applica solo al percorso di output di Amazon S3 specificato per i risultati delle query di Athena. Per ulteriori informazioni, consulta Specificare la posizione dei risultati della query utilizzando la console Athena.
Sintassi
L'istruzione UNLOAD
utilizza la sintassi seguente.
UNLOAD (SELECT col_name
[, ...] FROM old_table
)
TO 's3://amzn-s3-demo-bucket/my_folder
/'
WITH ( property_name
= 'expression
' [, ...] )
Tranne quando si scrive su partizioni, la TO
destinazione deve specificare una posizione in Amazon S3 priva di dati. Prima che la query UNLOAD
scrive nella posizione specificata, verifica che la posizione del bucket sia vuota. Poiché UNLOAD
non scrive i dati nella posizione specificata se la posizione contiene già dati, UNLOAD
non sovrascrive i dati esistenti. Per riutilizzare una posizione bucket come destinazione per UNLOAD
, elimina i dati nella posizione del bucket e quindi esegui nuovamente la query.
Tieni presente che quando si UNLOAD
scrive su partizioni, questo comportamento è diverso. Se esegui la stessa UNLOAD
query più volte con la stessa SELECT
istruzione, la stessa TO
posizione e le stesse partizioni, ogni UNLOAD
query scarica i dati in Amazon S3 nella posizione e nelle partizioni specificate.
Parametri
Valori possibili per property_name
sono i seguenti.
- formato = '
file_format
' -
Obbligatorio. Specifica il formato di file dell'output. Valori possibili per
file_format
sonoORC
,PARQUET
AVRO
,JSON
, oTEXTFILE
. - compressione = '
compression_format
' -
Facoltativo. Questa opzione è specifica per i formati ORC e Parquet. PerORC, l'impostazione predefinita è
zlib
, e per Parquet, l'impostazione predefinita ègzip
. Per informazioni sui formati di compressione supportati, consulta Supporto alla compressione Athena.Nota
Questa opzione non è valida per il formato
AVRO
. Athena utilizzagzip
per i formatiJSON
eTEXTFILE
. - livello_compressione =
compression_level
-
Facoltativo. Il livello di compressione da utilizzare per la compressione. ZSTD Questa proprietà si applica solo alla ZSTD compressione. Per ulteriori informazioni, consulta Usa i livelli di ZSTD compressione.
- field_delimiter = '
delimiter
' -
Facoltativo. Speciifica un delimitatore di campo a carattere singolo per i file in, e altri formati di testo. CSV TSV L'esempio seguente specifica la virgola come separatore decimale.
WITH (field_delimiter = ',')
Attualmente, i delimitatori di campo multicarattere non sono supportati. Se non si specifica un separatore di campo, viene usato il carattere ottale
\001
(^A). - ARRAYpartizionato_da = [
col_name
[,...] ] -
Facoltativo. Un elenco matrice di colonne in base al quale l'output è partizionato.
Nota
Nell'istruzione
SELECT
, assicurati che i nomi delle colonne partizionate siano elencati per ultimi nell'elenco delle colonne.
Esempi
L'esempio seguente scrive l'output di una SELECT
query nella posizione Amazon S3 s3://amzn-s3-demo-bucket/unload_test_1/
utilizzando JSON il formato.
UNLOAD (SELECT * FROM old_table)
TO 's3://amzn-s3-demo-bucket/unload_test_1/'
WITH (format = 'JSON')
L'esempio seguente scrive l'output di una query SELECT
in formato Parquet utilizzando la compressione Snappy.
UNLOAD (SELECT * FROM old_table)
TO 's3://amzn-s3-demo-bucket/'
WITH (format = 'PARQUET',compression = 'SNAPPY')
Nell'esempio seguente vengono scritte quattro colonne in formato testo, con l'output partizionato dall'ultima colonna.
UNLOAD (SELECT name1, address1, comment1, key1 FROM table1)
TO 's3://amzn-s3-demo-bucket/ partitioned/'
WITH (format = 'TEXTFILE', partitioned_by = ARRAY['key1'])
L'esempio seguente scarica i risultati della query nella posizione specificata utilizzando il formato di file Parquet, ZSTD la compressione e il livello di ZSTD compressione 4.
UNLOAD (SELECT * FROM old_table)
TO 's3://amzn-s3-demo-bucket/'
WITH (format = 'PARQUET', compression = 'ZSTD', compression_level = 4)