

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à.

# UNLOAD
<a name="unload"></a>

Scrive i risultati delle query da un'istruzione `SELECT` al formato di dati specificato. I formati supportati per `UNLOAD` includono Apache Parquet, ORC, Apache Avro e JSON. CSV è l’unico formato di output supportato dal comando `SELECT` Athena, ma è possibile utilizzare `UNLOAD` il comando, che supporta diversi formati di output, per racchiudere `SELECT` la 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 CSV, le istruzioni CTAS richiedono anche la creazione di una tabella in Athena. L’istruzione `UNLOAD` è utile quando si desidera generare i risultati di una query `SELECT` in un formato non CSV ma non richiedono la tabella associata. Ad esempio, un'applicazione downstream potrebbe richiedere i risultati di una query `SELECT` in formato JSON, e Parquet o ORC potrebbe fornire un vantaggio in termini di prestazioni rispetto a CSV se si intende utilizzare i risultati della query `SELECT` per ulteriori analisi.

## Considerazioni e limitazioni
<a name="unload-considerations-and-limitations"></a>

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 query `SELECT` nell'istruzione `UNLOAD` 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 per CTAS e per le istruzioni `INSERT INTO`.
+ **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 manifesto 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 [Identificazione dei file di output delle query](querying-finding-output-files.md#querying-identifying-output-files).
+ **Crittografia** – `UNLOAD` vengono crittografati in base alla configurazione di crittografia utilizzata per Amazon S3. Per configurare la configurazione di crittografia per crittografare i `UNLOAD` risultati, puoi utilizzare l'[EncryptionConfiguration API](https://docs.aws.amazon.com/athena/latest/APIReference/API_EncryptionConfiguration.html).
+ **Istruzioni preparate** – `UNLOAD` può essere utilizzato con istruzioni preparate. Per informazioni sulle istruzioni preparate in Athena, consulta [Utilizzare query parametrizzate](querying-with-prepared-statements.md).
+ **Service quotas**: `UNLOAD` utilizza le quote di query DML. Per informazioni sulle quote, consulta [Service Quotas](service-limits.md).
+ **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 una posizione dei risultati delle query utilizzando la console Athena](query-results-specify-location-console.md).

## Sintassi
<a name="unload-syntax"></a>

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' [, ...] )
```

La destinazione `TO` deve specificare una posizione in Amazon S3 che non contiene 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. 

Notate 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.

### Parameters
<a name="unload-parameters"></a>

I valori possibili di *property\$1name* sono indicati di seguito.

** formato = '' *file\$1format* **  
Obbligatorio. Specifica il formato di file dell'output. I valori possibili per *file\$1format* sono `ORC``PARQUET`,`AVRO`,`JSON`, o`TEXTFILE`.

** compressione = '*compression\$1format*' **  
Opzionale. Questa opzione è specifica per i formati ORC e Parquet. Per ORC il valore predefinito è `zlib` e per Parquet il valore predefinito è `gzip`. Per informazioni sui formati di compressione supportati, consulta [Supporto alla compressione Athena](https://docs.aws.amazon.com/athena/latest/ug/compression-formats.html).   
Questa opzione non è valida per il formato `AVRO`. Athena utilizza `gzip` per i formati `JSON` e `TEXTFILE`.

**livello\$1compressione = *compression\$1level* **  
Opzionale. Il livello di compressione da utilizzare per la compressione ZSTD. Questa proprietà si applica solo alla compressione ZSTD. Per ulteriori informazioni, consulta [Usa i livelli di compressione ZSTD](compression-support-zstd-levels.md).

** field\$1delimiter = '' *delimiter* **  
Opzionale. Specifica un delimitatore di campo a carattere singolo per file in CSV, TSV e altri formati di testo. 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).

** partizionato\$1da = ARRAY [[,...]] *col\$1name* **  
Opzionale. Un elenco matrice di colonne in base al quale l'output è partizionato.  
Nell'istruzione `SELECT`, assicurati che i nomi delle colonne partizionate siano elencati per ultimi nell'elenco delle colonne. 

## Esempi
<a name="unload-examples"></a>

L'esempio seguente scrive l'output di una query `SELECT` per la posizione Amazon S3 `s3://amzn-s3-demo-bucket/unload_test_1/` utilizzando il formato JSON.

```
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 file Parquet, la compressione ZSTD e il livello di compressione ZSTD 4.

```
UNLOAD (SELECT * FROM old_table) 
TO 's3://amzn-s3-demo-bucket/' 
WITH (format = 'PARQUET', compression = 'ZSTD', compression_level = 4)
```

## Risorse aggiuntive
<a name="unload-additional-resources"></a>
+ [Semplifica le tue pipeline ETL e ML utilizzando la funzionalità Amazon Athena UNLOAD](https://aws.amazon.com/blogs/big-data/simplify-your-etl-and-ml-pipelines-using-the-amazon-athena-unload-feature/) nel *Blog sui Big Data di AWS *. 