

 Amazon Redshift non supporterà più la creazione di nuovi Python UDFs a partire dalla Patch 198. Python esistente UDFs continuerà a funzionare fino al 30 giugno 2026. Per ulteriori informazioni, consulta il [post del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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

# Esempi di UNLOAD
<a name="r_UNLOAD_command_examples"></a>

Questi esempi mostrano vari parametri del comando UNLOAD. La maggior parte degli esempi usa il set di dati TICKIT di esempio. Per ulteriori informazioni, consulta [Database di esempio](c_sampledb.md).

**Nota**  
Questi esempi contengono interruzioni di riga per una migliore leggibilità. Non includere interruzioni di riga o spazi nella stringa *credentials-args*.

## Scarica VENUE in un file delimitato da pipe (delimitatore predefinito)
<a name="unload-examples-venue"></a>

L'esempio seguente scarica la tabella VENUE e scrive i dati in `s3://amzn-s3-demo-bucket/unload/`: 

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/unload/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

Per impostazione predefinita, UNLOAD scrive uno o più file per sezione. Supponendo un cluster a due nodi con due sezioni per nodo, l'esempio precedente crea questi file in `amzn-s3-demo-bucket`:

```
unload/0000_part_00
unload/0001_part_00
unload/0002_part_00
unload/0003_part_00
```

Per differenziare meglio i file di output, puoi includere un prefisso nella posizione. L'esempio seguente scarica la tabella VENUE e scrive i dati in `s3://amzn-s3-demo-bucket/unload/venue_pipe_`: 

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/unload/venue_pipe_'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

Il risultato sono questi quattro file nella cartella `unload`, sempre presupponendo quattro sezioni.

```
venue_pipe_0000_part_00
venue_pipe_0001_part_00
venue_pipe_0002_part_00
venue_pipe_0003_part_00
```

## Scaricare la tabella LINEITEM nei file Parquet partizionati
<a name="unload-examples-partitioned-parquet"></a>

Nell'esempio seguente viene scaricata la tabella LINEITEM in formato Parquet, partizionata dalla colonna `l_shipdate`. 

```
unload ('select * from lineitem')
to 's3://amzn-s3-demo-bucket/lineitem/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
PARQUET
PARTITION BY (l_shipdate);
```

Supponendo quattro sezioni, i file Parquet risultanti vengono partizionati dinamicamente in varie cartelle. 

```
s3://amzn-s3-demo-bucket/lineitem/l_shipdate=1992-01-02/0000_part_00.parquet
                                             0001_part_00.parquet
                                             0002_part_00.parquet
                                             0003_part_00.parquet
s3://amzn-s3-demo-bucket/lineitem/l_shipdate=1992-01-03/0000_part_00.parquet
                                             0001_part_00.parquet
                                             0002_part_00.parquet
                                             0003_part_00.parquet
s3://amzn-s3-demo-bucket/lineitem/l_shipdate=1992-01-04/0000_part_00.parquet
                                             0001_part_00.parquet
                                             0002_part_00.parquet
                                             0003_part_00.parquet
...
```

**Nota**  
In alcuni casi, il comando UNLOAD viene utilizzato con l'opzione INCLUDE come illustrato nella seguente istruzione SQL.   

```
unload ('select * from lineitem')
to 's3://amzn-s3-demo-bucket/lineitem/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
PARQUET
PARTITION BY (l_shipdate) INCLUDE;
```
In questi casi, la colonna `l_shipdate` è presente anche nei dati nei file Parquet. In caso contrario, i dati delle colonne `l_shipdate` non si trovano nei file Parquet.

## Scarica la tabella VENUE in un file JSON
<a name="unload-examples-json"></a>

L'esempio seguente scarica la tabella VENUE e scrive i dati in formato JSON in `s3://amzn-s3-demo-bucket/unload/`.

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/unload/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
JSON;
```

Di seguito sono riportare righe di esempio dalla tabella VENUE.

```
venueid | venuename                  | venuecity       | venuestate | venueseats
--------+----------------------------+-----------------+------------+-----------
      1 | Pinewood Racetrack         | Akron           | OH         | 0
      2 | Columbus "Crew" Stadium    | Columbus        | OH         | 0
      4 | Community, Ballpark, Arena | Kansas City     | KS         | 0
```

Dopo lo scaricamento in JSON, il formato del file è simile al seguente.

```
{"venueid":1,"venuename":"Pinewood Racetrack","venuecity":"Akron","venuestate":"OH","venueseats":0}
{"venueid":2,"venuename":"Columbus \"Crew\" Stadium ","venuecity":"Columbus","venuestate":"OH","venueseats":0}
{"venueid":4,"venuename":"Community, Ballpark, Arena","venuecity":"Kansas City","venuestate":"KS","venueseats":0}
```

## Scarica VENUE in un file CSV
<a name="unload-examples-csv"></a>

L'esempio seguente scarica la tabella VENUE e scrive i dati in formato CSV in `s3://amzn-s3-demo-bucket/unload/`.

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/unload/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
CSV;
```

Supponiamo che la tabella VENUE contenga le seguenti righe.

```
venueid | venuename                  | venuecity       | venuestate | venueseats
--------+----------------------------+-----------------+------------+-----------
      1 | Pinewood Racetrack         | Akron           | OH         | 0
      2 | Columbus "Crew" Stadium    | Columbus        | OH         | 0
      4 | Community, Ballpark, Arena | Kansas City     | KS         | 0
```

Il file di unload è simile al seguente.

```
1,Pinewood Racetrack,Akron,OH,0
2,"Columbus ""Crew"" Stadium",Columbus,OH,0
4,"Community, Ballpark, Arena",Kansas City,KS,0
```

## Scarica VENUE in un file CSV utilizzando un delimitatore
<a name="unload-examples-csv-delimiter"></a>

L'esempio seguente scarica la tabella VENUE e scrive i dati in formato CSV utilizzando il carattere pipe (\$1) come delimitatore. Il file scaricato viene scritto su `s3://amzn-s3-demo-bucket/unload/`. La tabella VENUE in questo esempio contiene il carattere pipe nel valore della prima riga (`Pinewood Race|track`). Lo fa per mostrare che il valore nel risultato è racchiuso tra virgolette doppie. Una virgoletta doppia è sottoposta a escape mediante una virgoletta doppia e l'intero campo è racchiuso tra virgolette doppie. 

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/unload/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
CSV DELIMITER AS '|';
```

Supponiamo che la tabella VENUE contenga le seguenti righe.

```
venueid | venuename                  | venuecity       | venuestate | venueseats
--------+----------------------------+-----------------+------------+-------------
      1 | Pinewood Race|track        | Akron           | OH         | 0
      2 | Columbus "Crew" Stadium    | Columbus        | OH         | 0
      4 | Community, Ballpark, Arena | Kansas City     | KS         | 0
```

Il file di unload è simile al seguente.

```
1|"Pinewood Race|track"|Akron|OH|0
2|"Columbus ""Crew"" Stadium"|Columbus|OH|0
4|Community, Ballpark, Arena|Kansas City|KS|0
```

## Scarica VENUE con un file manifest
<a name="unload-examples-manifest"></a>

Per creare un file manifest, includi l'opzione MANIFEST. L’esempio seguente scarica la tabella VENUE e scrive un file manifesto insieme ai file di dati in s3://amzn-s3-demo-bucket/venue\$1pipe\$1: 

**Importante**  
Se scarichi i file con l'opzione MANIFEST, devi utilizzare l'opzione MANIFEST con il comando COPY quando carichi i file. Se usi lo stesso prefisso per caricare i file e non specifichi l'opzione MANIFEST, COPY non riesce perché presuppone che il file manifest sia un file di dati.

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/venue_pipe_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
manifest;
```

Il risultato sono questi cinque file:

```
s3://amzn-s3-demo-bucket/venue_pipe_0000_part_00
s3://amzn-s3-demo-bucket/venue_pipe_0001_part_00
s3://amzn-s3-demo-bucket/venue_pipe_0002_part_00
s3://amzn-s3-demo-bucket/venue_pipe_0003_part_00
s3://amzn-s3-demo-bucket/venue_pipe_manifest
```

Di seguito viene mostrato il contenuto di un file manifest. 

```
{
  "entries": [
    {"url":"s3://amzn-s3-demo-bucket/tickit/venue_0000_part_00"},
    {"url":"s3://amzn-s3-demo-bucket/tickit/venue_0001_part_00"},
    {"url":"s3://amzn-s3-demo-bucket/tickit/venue_0002_part_00"},
    {"url":"s3://amzn-s3-demo-bucket/tickit/venue_0003_part_00"}
  ]
}
```

## Scarica VENUE con MANIFEST VERBOSE
<a name="unload-examples-manifest-verbose"></a>

Se viene specificata l'opzione MANIFEST VERBOSE, il file manifest include le seguenti sezioni: 
+ La sezione `entries` elenca il percorso Amazon S3, la dimensione del file e il conteggio righe per ciascun file. 
+ La sezione `schema` elenca i nomi della colonna, i tipi di dati e la dimensione di ciascuna colonna. 
+ La sezione `meta` mostra la dimensione totale del file e il conteggio righe per tutti i file. 

L'esempio seguente scarica la tabella VENUE utilizzando l'opzione MANIFEST VERBOSE. 

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/unload_venue_folder/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
manifest verbose;
```

Di seguito viene mostrato il contenuto di un file manifest.

```
{
  "entries": [
    {"url":"s3://amzn-s3-demo-bucket/venue_pipe_0000_part_00", "meta": { "content_length": 32295, "record_count": 10 }},
    {"url":"s3://amzn-s3-demo-bucket/venue_pipe_0001_part_00", "meta": { "content_length": 32771, "record_count": 20 }},
    {"url":"s3://amzn-s3-demo-bucket/venue_pipe_0002_part_00", "meta": { "content_length": 32302, "record_count": 10 }},
    {"url":"s3://amzn-s3-demo-bucket/venue_pipe_0003_part_00", "meta": { "content_length": 31810, "record_count": 15 }}
  ],
  "schema": {
    "elements": [
      {"name": "venueid", "type": { "base": "integer" }},
      {"name": "venuename", "type": { "base": "character varying", 25 }},
      {"name": "venuecity", "type": { "base": "character varying", 25 }},
      {"name": "venuestate", "type": { "base": "character varying", 25 }},
      {"name": "venueseats", "type": { "base": "character varying", 25 }}
    ]
  },
  "meta": {
    "content_length": 129178,
    "record_count": 55
  },
  "author": {
    "name": "Amazon Redshift",
    "version": "1.0.0"
  }
}
```

## Scarica VENUE con un Header
<a name="unload-examples-header"></a>

Di seguito è riportato un esempio di scaricamento di VENUE con una riga intestazione.

```
unload ('select * from venue where venueseats > 75000')
to 's3://amzn-s3-demo-bucket/unload/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
header
parallel off;
```

Di seguito viene mostrato il contenuto di un file output con una riga intestazione.

```
venueid|venuename|venuecity|venuestate|venueseats
6|New York Giants Stadium|East Rutherford|NJ|80242
78|INVESCO Field|Denver|CO|76125
83|FedExField|Landover|MD|91704
79|Arrowhead Stadium|Kansas City|MO|79451
```

## Scarica VENUE in file più piccoli
<a name="unload-examples-maxfilesize"></a>

Le dimensioni massime predefinite per un file sono di 6,2 GB. Se i dati scaricati sono superiori a 6,2 GB, UNLOAD crea un nuovo file per ogni segmento di dati da 6,2 GB. Per creare file più piccoli, specifica il parametro MAXFILESIZE. Presupponendo che la dimensione dei dati nell'esempio precedente fosse 20 GB, il seguente comando UNLOAD crea 20 file, ciascuno di 1 GB di dimensione.

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/unload/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
maxfilesize 1 gb;
```

## Scarica VENUE in serie
<a name="unload-examples-serial"></a>

Per scaricare in serie, specifica PARALLEL OFF. UNLOAD scrive quindi un file alla volta, fino a un massimo di 6,2 GB per file. 

L'esempio seguente scarica la tabella VENUE e scrive i dati in serie in `s3://amzn-s3-demo-bucket/unload/`. 

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/unload/venue_serial_'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
parallel off;
```

Il risultato è un file chiamato venue\$1serial\$1000. 

Se i dati scaricati sono superiori a 6,2 GB, UNLOAD crea un nuovo file per ogni segmento di dati da 6,2 GB. L'esempio seguente scarica la tabella LINEORDER e scrive i dati in serie in `s3://amzn-s3-demo-bucket/unload/`. 

```
unload ('select * from lineorder')
to 's3://amzn-s3-demo-bucket/unload/lineorder_serial_'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
parallel off gzip;
```

Il risultato è la seguente serie di file.

```
lineorder_serial_0000.gz
lineorder_serial_0001.gz
lineorder_serial_0002.gz
lineorder_serial_0003.gz
```

Per differenziare meglio i file di output, puoi includere un prefisso nella posizione. L'esempio seguente scarica la tabella VENUE e scrive i dati in `s3://amzn-s3-demo-bucket/venue_pipe_`: 

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/unload/venue_pipe_'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

Il risultato sono questi quattro file nella cartella `unload`, sempre presupponendo quattro sezioni.

```
venue_pipe_0000_part_00
venue_pipe_0001_part_00
venue_pipe_0002_part_00
venue_pipe_0003_part_00
```

## Carica VENUE da file scaricati
<a name="unload-examples-load"></a>

Per caricare una tabella da un set di file scaricati, è sufficiente invertire il processo utilizzando un comando COPY. L'esempio seguente crea una nuova tabella LOADVENUE e carica la tabella dai file di dati creati nell'esempio precedente.

```
create table loadvenue (like venue);

copy loadvenue from 's3://amzn-s3-demo-bucket/venue_pipe_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

Se hai usato l'opzione MANIFEST per creare un file manifest con i file scaricati, puoi caricare i dati utilizzando lo stesso file manifest. A questo scopo, puoi eseguire un comando COPY con l'opzione MANIFEST. L'esempio seguente carica i dati utilizzando un file manifest.

```
copy loadvenue
from 's3://amzn-s3-demo-bucket/venue_pipe_manifest' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
manifest;
```

## Scarica VENUE in file crittografati
<a name="unload-examples-unload-encrypted"></a>

L'esempio seguente scarica la tabella VENUE in un set di file crittografati utilizzando una chiave. AWS KMS Se specifichi un file manifest con l'opzione ENCRYPTED, anche il file manifest viene crittografato. Per ulteriori informazioni, consulta [Scaricamento di file di dati crittografati](t_unloading_encrypted_files.md).

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/venue_encrypt_kms'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
kms_key_id '1234abcd-12ab-34cd-56ef-1234567890ab'
manifest
encrypted;
```

L'esempio seguente scarica la tabella VENUE in un set di file crittografati utilizzando una chiave simmetrica master. 

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/venue_encrypt_cmk'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
master_symmetric_key 'EXAMPLEMASTERKEYtkbjk/OpCwtYSx/M4/t7DMCDIK722'
encrypted;
```

## Carica VENUE da file crittografati
<a name="unload-examples-load-encrypted"></a>

Per caricare le tabelle da un set di file creati usando UNLOAD con l'opzione ENCRYPT, devi invertire il processo utilizzando un comando COPY. Con quel comando, utilizza l'opzione ENCRYPTED e specifica la stessa chiave simmetrica master utilizzata per il comando UNLOAD. L'esempio seguente carica la tabella LOADVENUE dai file di dati crittografati creati nell'esempio precedente.

```
create table loadvenue (like venue);

copy loadvenue
from 's3://amzn-s3-demo-bucket/venue_encrypt_manifest'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
master_symmetric_key 'EXAMPLEMASTERKEYtkbjk/OpCwtYSx/M4/t7DMCDIK722'
manifest
encrypted;
```

## Scarica dati di VENUE in un file delimitato da tabulazioni
<a name="unload-examples-venue-tab"></a>

```
unload ('select venueid, venuename, venueseats from venue')
to 's3://amzn-s3-demo-bucket/venue_tab_'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
delimiter as '\t';
```

I file di dati di output hanno l'aspetto seguente: 

```
1	Toyota Park	Bridgeview	IL	0
2	Columbus Crew Stadium	Columbus	OH	0
3	RFK Stadium	Washington	DC	0
4	CommunityAmerica Ballpark	Kansas City	KS	0
5	Gillette Stadium	Foxborough	MA	68756
...
```

## Scarica VENUE in un file di dati a larghezza fissa
<a name="unload-venue-fixed-width"></a>

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/venue_fw_'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
fixedwidth as 'venueid:3,venuename:39,venuecity:16,venuestate:2,venueseats:6';
```

I file di dati di output sono simili a quanto segue. 

```
1  Toyota Park              Bridgeview  IL0
2  Columbus Crew Stadium    Columbus    OH0
3  RFK Stadium              Washington  DC0
4  CommunityAmerica BallparkKansas City KS0
5  Gillette Stadium         Foxborough  MA68756
...
```

## Scarica VENUE in un set di file delimitati da tabulazioni e compressi con GZIP
<a name="unload-examples-venue-gzip"></a>

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/venue_tab_'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
delimiter as '\t'
gzip;
```

## Scaricamento di VENUE in un file di testo compresso con GZIP
<a name="unload-examples-venue-extension-gzip"></a>

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/venue_tab_'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
extension 'txt.gz'
gzip;
```

## Scarica dati contenenti un delimitatore
<a name="unload-examples-delimiter"></a>

Questo esempio utilizza l'opzione ADDQUOTES per scaricare i dati delimitati da virgole in cui alcuni dei campi di dati effettivi contengono una virgola.

Per prima cosa, crea una tabella che contenga virgolette.

```
create table location (id int, location char(64));

insert into location values (1,'Phoenix, AZ'),(2,'San Diego, CA'),(3,'Chicago, IL');
```

Quindi, scarica i dati usando l'opzione ADDQUOTES.

```
unload ('select id, location from location')
to 's3://amzn-s3-demo-bucket/location_'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
delimiter ',' addquotes;
```

I file di dati scaricati hanno l'aspetto seguente: 

```
1,"Phoenix, AZ"
2,"San Diego, CA"
3,"Chicago, IL"
...
```

## Scarica i risultati di una query di join
<a name="unload-examples-join"></a>

L'esempio seguente scarica i risultati di una query di join che contiene una funzione finestra. 

```
unload ('select venuecity, venuestate, caldate, pricepaid,
sum(pricepaid) over(partition by venuecity, venuestate
order by caldate rows between 3 preceding and 3 following) as winsum
from sales join date on sales.dateid=date.dateid
join event on event.eventid=sales.eventid
join venue on event.venueid=venue.venueid
order by 1,2')
to 's3://amzn-s3-demo-bucket/tickit/winsum'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

I file di output hanno l'aspetto seguente: 

```
Atlanta|GA|2008-01-04|363.00|1362.00
Atlanta|GA|2008-01-05|233.00|2030.00
Atlanta|GA|2008-01-06|310.00|3135.00
Atlanta|GA|2008-01-08|166.00|8338.00
Atlanta|GA|2008-01-11|268.00|7630.00
...
```

## Scarica utilizzando NULL AS
<a name="unload-examples-null-as"></a>

UNLOAD restituisce valori null come stringhe vuote per impostazione predefinita. I seguenti esempi mostrano come usare NULL AS per sostituire una stringa di testo per null.

Per questi esempi, aggiungiamo valori null alla tabella VENUE.

```
update venue set venuestate = NULL
where venuecity = 'Cleveland';
```

Seleziona da VENUE dove VENUESTATE è null per verificare che le colonne contengano NULL.

```
select * from venue where venuestate is null;

 venueid |        venuename         | venuecity | venuestate | venueseats
---------+--------------------------+-----------+------------+------------
      22 | Quicken Loans Arena      | Cleveland |            |          0
     101 | Progressive Field        | Cleveland |            |      43345
      72 | Cleveland Browns Stadium | Cleveland |            |      73200
```

Ora, specifica UNLOAD per la tabella VENUE usando l'opzione NULL AS per sostituire i valori nulli con la stringa di caratteri '`fred`'. 

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/nulls/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
null as 'fred';
```

Il seguente esempio del file scaricato mostra che i valori nulli sono stati sostituiti con `fred`. Risulta che anche alcuni valori di VENUESEATS erano null e sono stati sostituiti con `fred`. Anche se il tipo di dati di VENUESEATS è intero, UNLOAD converte i valori in testo nei file scaricati, quindi COPY li converte in numeri interi. Se stai scaricando in un file a larghezza fissa, la stringa NULL AS non deve essere più grande della larghezza del campo.

```
248|Charles Playhouse|Boston|MA|0
251|Paris Hotel|Las Vegas|NV|fred
258|Tropicana Hotel|Las Vegas|NV|fred
300|Kennedy Center Opera House|Washington|DC|0
306|Lyric Opera House|Baltimore|MD|0
308|Metropolitan Opera|New York City|NY|0
  5|Gillette Stadium|Foxborough|MA|5
 22|Quicken Loans Arena|Cleveland|fred|0
101|Progressive Field|Cleveland|fred|43345
...
```

Per caricare una tabella dai file scaricati, utilizza un comando COPY con la stessa opzione NULL AS. 

**Nota**  
Se tenti di caricare i null in una colonna definita come NON NULL, il comando COPY ha esito negativo.

```
create table loadvenuenulls (like venue);

copy loadvenuenulls from 's3://amzn-s3-demo-bucket/nulls/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
null as 'fred';
```

Per verificare che le colonne contengano null, non solo stringhe vuote, seleziona da LOADVENUENULLS e filtra per null.

```
select * from loadvenuenulls where venuestate is null or venueseats is null;

 venueid |        venuename         | venuecity | venuestate | venueseats
---------+--------------------------+-----------+------------+------------
      72 | Cleveland Browns Stadium | Cleveland |            |      73200
     253 | Mirage Hotel             | Las Vegas | NV         |
     255 | Venetian Hotel           | Las Vegas | NV         |
      22 | Quicken Loans Arena      | Cleveland |            |          0
     101 | Progressive Field        | Cleveland |            |      43345
     251 | Paris Hotel              | Las Vegas | NV         |

...
```

Puoi usare UNLOAD con una tabella che contiene valori null utilizzando il comportamento predefinito NULL AS e quindi specificare COPY per copiare i dati di nuovo in una tabella utilizzando il comportamento predefinito NULL AS; tuttavia, tutti i campi non numerici nella tabella di destinazione contengono stringhe vuote, non null. Per impostazione predefinita, UNLOAD converte i valori null in stringhe vuote (spazio vuoto o lunghezza zero). COPY converte le stringhe vuote in NULL per le colonne numeriche, ma inserisce stringhe vuote in colonne non numeriche. L'esempio seguente mostra come eseguire un comando UNLOAD seguito da COPY utilizzando il comportamento predefinito NULL AS. 

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/nulls/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' allowoverwrite;

truncate loadvenuenulls;
copy loadvenuenulls from 's3://amzn-s3-demo-bucket/nulls/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

In questo caso, quando filtri per null, solo le righe in cui VENUESEATS contiene valori nulli. Dove VENUESTATE contiene valori nulli nella tabella (VENUE), VENUESTATE nella tabella di destinazione (LOADVENUENULLS) contiene stringhe vuote.

```
select * from loadvenuenulls where venuestate is null or venueseats is null;

 venueid |        venuename         | venuecity | venuestate | venueseats
---------+--------------------------+-----------+------------+------------
     253 | Mirage Hotel             | Las Vegas | NV         |
     255 | Venetian Hotel           | Las Vegas | NV         |
     251 | Paris Hotel              | Las Vegas | NV         |
...
```

Per caricare le stringhe vuote in colonne non numeriche come NULL, includi le opzioni EMPTYASNULL o BLANKSASNULL. Va bene usarle entrambe.

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/nulls/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' allowoverwrite;

truncate loadvenuenulls;
copy loadvenuenulls from 's3://amzn-s3-demo-bucket/nulls/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' EMPTYASNULL;
```

Per verificare che le colonne contengano NULL e non solo stringhe vuote o spazi, selezionare da LOADVENUENULLS e filtrare per null.

```
select * from loadvenuenulls where venuestate is null or venueseats is null;

 venueid |        venuename         | venuecity | venuestate | venueseats
---------+--------------------------+-----------+------------+------------
      72 | Cleveland Browns Stadium | Cleveland |            |      73200
     253 | Mirage Hotel             | Las Vegas | NV         |
     255 | Venetian Hotel           | Las Vegas | NV         |
      22 | Quicken Loans Arena      | Cleveland |            |          0
     101 | Progressive Field        | Cleveland |            |      43345
     251 | Paris Hotel              | Las Vegas | NV         |
     ...
```

## Scarica utilizzando il parametro ALLOWOVERWRITE
<a name="unload-examples-allowoverwrite"></a>

Per impostazione predefinita, UNLOAD non sovrascrive i file esistenti nel bucket di destinazione. Ad esempio, se esegui la stessa istruzione UNLOAD due volte senza modificare i file nel bucket di destinazione, il secondo UNLOAD non riesce. Per sovrascrivere i file esistenti, incluso il file manifest, specifica l'opzione ALLOWOVERWRITE.

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/venue_pipe_'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
manifest allowoverwrite;
```

## Scarica la tabella EVENT utilizzando i parametri PARALLEL e MANIFEST
<a name="unload-examples-manifest-parallel"></a>

È possibile SCARICARE una tabella in parallelo e generare un file manifest. I file di dati Amazon S3 sono tutti creati allo stesso livello e ai nomi viene aggiunto il suffisso dello schema `0000_part_00`. Il file manifest si trova allo stesso livello di cartella dei file di dati e ha il suffisso del testo `manifest`. Il seguente codice SQL scarica la tabella EVENT e crea file con il nome di base `parallel`

```
unload ('select * from mytickit1.event')
to 's3://amzn-s3-demo-bucket/parallel'
iam_role 'arn:aws:iam::123456789012:role/MyRedshiftRole'
parallel on
manifest;
```

L'elenco dei file Amazon S3 è simile al seguente.

```
 Name                       Last modified                        Size                  
 parallel0000_part_00	-   August 2, 2023, 14:54:39 (UTC-07:00) 52.1 KB  
 parallel0001_part_00	-   August 2, 2023, 14:54:39 (UTC-07:00) 53.4 KB
 parallel0002_part_00	-   August 2, 2023, 14:54:39 (UTC-07:00) 52.1 KB
 parallel0003_part_00	-   August 2, 2023, 14:54:39 (UTC-07:00) 51.1 KB
 parallel0004_part_00	-   August 2, 2023, 14:54:39 (UTC-07:00) 54.6 KB
 parallel0005_part_00	-   August 2, 2023, 14:54:39 (UTC-07:00) 53.4 KB
 parallel0006_part_00	-   August 2, 2023, 14:54:39 (UTC-07:00) 54.1 KB
 parallel0007_part_00	-   August 2, 2023, 14:54:39 (UTC-07:00) 55.9 KB
 parallelmanifest       -   August 2, 2023, 14:54:39 (UTC-07:00) 886.0 B
```

Il contenuto del file `parallelmanifest` è simile al seguente:

```
{
  "entries": [
    {"url":"s3://amzn-s3-demo-bucket/parallel0000_part_00", "meta": { "content_length": 53316 }},
    {"url":"s3://amzn-s3-demo-bucket/parallel0001_part_00", "meta": { "content_length": 54704 }},
    {"url":"s3://amzn-s3-demo-bucket/parallel0002_part_00", "meta": { "content_length": 53326 }},
    {"url":"s3://amzn-s3-demo-bucket/parallel0003_part_00", "meta": { "content_length": 52356 }},
    {"url":"s3://amzn-s3-demo-bucket/parallel0004_part_00", "meta": { "content_length": 55933 }},
    {"url":"s3://amzn-s3-demo-bucket/parallel0005_part_00", "meta": { "content_length": 54648 }},
    {"url":"s3://amzn-s3-demo-bucket/parallel0006_part_00", "meta": { "content_length": 55436 }},
    {"url":"s3://amzn-s3-demo-bucket/parallel0007_part_00", "meta": { "content_length": 57272 }}
  ]
}
```

## Scarica la tabella EVENT utilizzando i parametri PARALLEL OFF e MANIFEST
<a name="unload-examples-manifest-serial"></a>

È possibile SCARICARE una tabella in parallelo (PARALLEL OFF) e generare un file manifest. I file di dati Amazon S3 sono tutti creati allo stesso livello e ai nomi viene aggiunto il suffisso dello schema `0000`. Il file manifest si trova allo stesso livello di cartella dei file di dati e ha il suffisso del testo `manifest`.

```
unload ('select * from mytickit1.event')
to 's3://amzn-s3-demo-bucket/serial'
iam_role 'arn:aws:iam::123456789012:role/MyRedshiftRole'
parallel off
manifest;
```

L'elenco dei file Amazon S3 è simile al seguente.

```
 Name                       Last modified                        Size                  
 serial0000             -   August 2, 2023, 15:54:39 (UTC-07:00) 426.7 KB  
 serialmanifest         -   August 2, 2023, 15:54:39 (UTC-07:00) 120.0 B
```

Il contenuto del file `serialmanifest` è simile al seguente:

```
{
  "entries": [
    {"url":"s3://amzn-s3-demo-bucket/serial000", "meta": { "content_length": 436991 }}
  ]
}
```

## Scarica la tabella EVENT utilizzando i parametri PARTITION BY e MANIFEST
<a name="unload-examples-manifest-partition"></a>

È possibile SCARICARE una tabella per partizione e generare un file manifest. In Amazon S3 viene creata una nuova cartella con cartelle di partizione secondarie e i file di dati nelle cartelle secondarie con uno schema di nome simile a `0000_par_00`. Il file manifest si trova allo stesso livello di cartella delle cartelle secondarie con il nome `manifest`.

```
unload ('select * from mytickit1.event')
to 's3://amzn-s3-demo-bucket/partition'
iam_role 'arn:aws:iam::123456789012:role/MyRedshiftRole'
partition by (eventname)
manifest;
```

L'elenco dei file Amazon S3 è simile al seguente.

```
 Name                   Type     Last modified                        Size                  
 partition           	Folder
```

Nella cartella `partition` ci sono cartelle secondarie con il nome della partizione e il file manifest. Di seguito è riportata la parte inferiore dell'elenco delle cartelle nella cartella `partition`, simile alla seguente.

```
 Name                   Type      Last modified                        Size                  
 ...
 eventname=Zucchero/    Folder 
 eventname=Zumanity/    Folder 
 eventname=ZZ Top/      Folder  
 manifest          	    -	    August 2, 2023, 15:54:39 (UTC-07:00) 467.6 KB
```

Nella cartella `eventname=Zucchero/` ci sono i file di dati simili ai seguenti.

```
 Name               Last modified                        Size                  
 0000_part_00	-   August 2, 2023, 15:59:19 (UTC-07:00) 70.0 B
 0001_part_00	-   August 2, 2023, 15:59:16 (UTC-07:00) 106.0 B
 0002_part_00	-   August 2, 2023, 15:59:15 (UTC-07:00) 70.0 B
 0004_part_00	-   August 2, 2023, 15:59:17 (UTC-07:00) 141.0 B
 0006_part_00	-   August 2, 2023, 15:59:16 (UTC-07:00) 35.0 B
 0007_part_00	-   August 2, 2023, 15:59:19 (UTC-07:00) 108.0 B
```

L'aspetto del contenuto del file `manifest` è simile al seguente:

```
{
  "entries": [
    ...
    {"url":"s3://amzn-s3-demo-bucket/partition/eventname=Zucchero/007_part_00", "meta": { "content_length": 108 }},
    {"url":"s3://amzn-s3-demo-bucket/partition/eventname=Zumanity/007_part_00", "meta": { "content_length": 72 }}
  ]
}
```

## Scarica la tabella EVENT utilizzando i parametri MAXFILESIZE, ROWGROUPSIZE e MANIFEST
<a name="unload-examples-manifest-maxsize"></a>

È possibile SCARICARE una tabella in parallelo e generare un file manifest. I file di dati Amazon S3 sono tutti creati allo stesso livello e ai nomi viene aggiunto il suffisso dello schema `0000_part_00`. I file di dati Parquet generati sono limitati a 256 MB e la dimensione del gruppo di righe è di 128 MB. Il file manifest si trova allo stesso livello di cartella dei file di dati e ha il suffisso `manifest`.

```
unload ('select * from mytickit1.event')
to 's3://amzn-s3-demo-bucket/eventsize'
iam_role 'arn:aws:iam::123456789012:role/MyRedshiftRole'
maxfilesize 256 MB
rowgroupsize 128 MB
parallel on
parquet
manifest;
```

L'elenco dei file Amazon S3 è simile al seguente.

```
 Name                            Type      Last modified                        Size 
 eventsize0000_part_00.parquet	parquet	August 2, 2023, 17:35:21 (UTC-07:00) 24.5 KB
 eventsize0001_part_00.parquet	parquet	August 2, 2023, 17:35:21 (UTC-07:00) 24.8 KB
 eventsize0002_part_00.parquet	parquet	August 2, 2023, 17:35:21 (UTC-07:00) 24.4 KB
 eventsize0003_part_00.parquet	parquet	August 2, 2023, 17:35:21 (UTC-07:00) 24.0 KB
 eventsize0004_part_00.parquet	parquet	August 2, 2023, 17:35:21 (UTC-07:00) 25.3 KB
 eventsize0005_part_00.parquet	parquet	August 2, 2023, 17:35:21 (UTC-07:00) 24.8 KB
 eventsize0006_part_00.parquet	parquet	August 2, 2023, 17:35:21 (UTC-07:00) 25.0 KB
 eventsize0007_part_00.parquet	parquet	August 2, 2023, 17:35:21 (UTC-07:00) 25.6 KB
 eventsizemanifest                 -       August 2, 2023, 17:35:21 (UTC-07:00) 958.0 B
```

Il contenuto del file `eventsizemanifest` è simile al seguente:

```
{
  "entries": [
    {"url":"s3://amzn-s3-demo-bucket/eventsize0000_part_00.parquet", "meta": { "content_length": 25130 }},
    {"url":"s3://amzn-s3-demo-bucket/eventsize0001_part_00.parquet", "meta": { "content_length": 25428 }},
    {"url":"s3://amzn-s3-demo-bucket/eventsize0002_part_00.parquet", "meta": { "content_length": 25025 }},
    {"url":"s3://amzn-s3-demo-bucket/eventsize0003_part_00.parquet", "meta": { "content_length": 24554 }},
    {"url":"s3://amzn-s3-demo-bucket/eventsize0004_part_00.parquet", "meta": { "content_length": 25918 }},
    {"url":"s3://amzn-s3-demo-bucket/eventsize0005_part_00.parquet", "meta": { "content_length": 25362 }},
    {"url":"s3://amzn-s3-demo-bucket/eventsize0006_part_00.parquet", "meta": { "content_length": 25647 }},
    {"url":"s3://amzn-s3-demo-bucket/eventsize0007_part_00.parquet", "meta": { "content_length": 26256 }}
  ]
}
```