

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

# Caricamento di dati da Amazon S3
<a name="t_Loading-data-from-S3"></a>

Il comando COPY sfrutta l'architettura MPP (Massively Parallel Processing) di Amazon Redshift per leggere e caricare dati in parallelo da uno o più file in un bucket Amazon S3. È possibile ottenere il massimo dall'elaborazione parallela suddividendo i dati in più file, nei casi in cui i file sono compressi. Ci sono eccezioni a questa regola. Queste sono descritte in dettaglio in [Caricamento dei file di dati](https://docs.aws.amazon.com/redshift/latest/dg/c_best-practices-use-multiple-files.html). È anche possibile ottenere il massimo dall'elaborazione parallela impostando le chiavi di distribuzione nelle tabelle. Per ulteriori informazioni sulle chiavi di distribuzione, consulta [Distribuzione dei dati per l’ottimizzazione delle query](t_Distributing_data.md). 

I dati vengono caricati nella tabella di destinazione, una riga per riga. I campi nel file di dati corrispondono alle colonne della tabella in ordine, da sinistra a destra. I campi nei file di dati possono essere a larghezza fissa o delimitati da caratteri; il delimitatore predefinito è una barra verticale (\$1). Per impostazione predefinita, vengono caricate tutte le colonne della tabella, ma è possibile definire facoltativamente un elenco di colonne separato da virgole. Se una colonna della tabella non è inclusa nell'elenco delle colonne specificato nel comando COPY, viene caricata con un valore predefinito. Per ulteriori informazioni, consulta [Caricamento dei valori delle colonne predefiniti](c_loading_default_values.md).

**Topics**
+ [Caricamento dei dati da file compressi e non compressi](t_splitting-data-files.md)
+ [Caricamento di file in Amazon S3 da usare con COPY](t_uploading-data-to-S3.md)
+ [Utilizzo del comando COPY per il caricamento da Amazon S3](t_loading-tables-from-s3.md)

# Caricamento dei dati da file compressi e non compressi
<a name="t_splitting-data-files"></a>

Quando carichi dati compressi, ti consigliamo di suddividere i dati per ogni tabella in più file. Quando carichi dati non compressi e delimitati, il comando COPY utilizza l'elaborazione massivamente parallela (MPP) e gli intervalli di scansione per caricare dati da file di grandi dimensioni in un bucket Amazon S3.

## Caricamento dei dati da più file compressi
<a name="t_splitting-data-files-compressed"></a>

Nei casi in cui sono stati compressi dati, ti consigliamo di suddividerli per ogni tabella in più file. Il comando COPY può caricare dati da più file in parallelo. È possibile caricare più file specificando un prefisso comune o *chiave di prefisso*, per l'insieme o elencando in modo esplicito i file in un file manifest.

Dividi i dati in file in modo che il numero di file sia un multiplo del numero di sezioni nel cluster. In questo modo Amazon Redshift può dividere i dati in modo uniforme tra le sezioni. Il numero di sezioni per nodo dipende dalla dimensione dei nodi del cluster. Ad esempio, ogni nodo di calcolo dc2.large dispone di due sezioni e ogni nodo di calcolo dc2.8xlarge dispone di 16 sezioni. Per ulteriori informazioni sul numero di sezioni per ogni dimensione di nodo, consulta [Informazioni su cluster e nodi](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-about-clusters-and-nodes) nella *Guida alla gestione di Amazon Redshift*. 

Tutti i nodi partecipano all'esecuzione di query parallele, lavorando sui dati di calcolo distribuiti più uniformemente possibile all'interno delle sezioni. Se disponi di un cluster con due nodi dc2.large, puoi suddividere i dati in quattro file o in multipli di quattro. Amazon Redshift non prende in considerazione la dimensione di file nella suddivisione del carico di lavoro. Pertanto, è necessario assicurarsi che i file abbiano approssimativamente le stesse dimensioni, da 1 MB a 1 GB dopo la compressione. 

Per utilizzare i prefissi degli oggetti per identificare i file di caricamento, denomina ciascun file con un prefisso comune. Ad esempio, il file `venue.txt` può essere diviso in quattro file, come segue.

```
venue.txt.1
venue.txt.2
venue.txt.3
venue.txt.4
```

Se collochi più file in una cartella nel bucket, specificando il nome della cartella come prefisso, COPY carica tutti i file nella cartella. Se elenchi in modo esplicito i file da caricare tramite un file manifest, i file possono risiedere in diversi bucket o diverse cartelle.

Per ulteriori informazioni sui file manifest, consulta [Utilizzo di un manifest per specificare i fili di dati](r_COPY_command_examples.md#copy-command-examples-manifest).

## Caricamento di dati da file delimitati e non compressi
<a name="t_splitting-data-files-uncompressed"></a>

Quando carichi dati delimitati e non compressi, il comando COPY utilizza l'architettura MPP (Massively Parallel Processing) di Amazon Redshift. Amazon Redshift utilizza automaticamente le sezioni che lavorano in parallelo per caricare intervalli di dati da un file di grandi dimensioni in un bucket Amazon S3. Il file deve essere delimitato per il caricamento parallelo. Ad esempio, tubo delimitato. Il caricamento automatico dei dati in parallelo con il comando COPY non è disponibile per i file CSV. È possibile utilizzare l'elaborazione parallela impostando le chiavi di distribuzione nelle tabelle. Per ulteriori informazioni sulle chiavi di distribuzione, consulta [Distribuzione dei dati per l’ottimizzazione delle query](t_Distributing_data.md).

Il caricamento automatico dei dati in parallelo non è supportato se la query COPY include una delle parole chiave ESCAPE, REMOVEQUOTES e FIXEDWIDTH.

I dati dai file vengono caricati nella tabella di destinazione, una riga per riga. I campi nel file di dati corrispondono alle colonne della tabella in ordine, da sinistra a destra. I campi nei file di dati possono essere a larghezza fissa o delimitati da caratteri; il delimitatore predefinito è una barra verticale (\$1). Per impostazione predefinita, vengono caricate tutte le colonne della tabella, ma è possibile definire facoltativamente un elenco di colonne separato da virgole. Se una colonna della tabella non è inclusa nell'elenco delle colonne specificato nel comando COPY, viene caricata con un valore predefinito. Per ulteriori informazioni, consulta [Caricamento dei valori delle colonne predefiniti](c_loading_default_values.md).

Segui questo procedimento generale per caricare dati da Amazon S3, quando i dati non sono compressi e delimitati:

1. Caricare i file su Amazon S3.

1. Esegui un comando COPY per caricare la tabella. 

1. Verifica i dati siano stati caricati correttamente.

Per esempi di comandi COPY, consultare [Esempi di COPY](r_COPY_command_examples.md). Per informazioni sui dati caricati in Amazon Redshift, consultare le tabelle di sistema [STL\$1LOAD\$1COMMITS](r_STL_LOAD_COMMITS.md) e [STL\$1LOAD\$1ERRORS](r_STL_LOAD_ERRORS.md). 

Per ulteriori informazioni sui nodi e sulle sezioni contenute in ciascun nodo, consulta [Informazioni su cluster e nodi](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-about-clusters-and-nodes) nella *Guida alla gestione di Amazon Redshift*.

# Caricamento di file in Amazon S3 da usare con COPY
<a name="t_uploading-data-to-S3"></a>

Ci sono un paio di approcci da adottare quando si caricano file di testo su Amazon S3:
+ Se disponi di file compressi, ti consigliamo di dividere file di grandi dimensioni per beneficiare dall'elaborazione parallela in Amazon Redshift.
+ D'altra parte, COPY divide automaticamente dati di file di grandi dimensioni, non compressi e delimitati da testo per facilitare il parallelismo e distribuire efficacemente i dati da file di grandi dimensioni.

Creare un bucket Amazon S3 per contenere i file di dati, quindi caricare i file di dati nel bucket. Per informazioni sulla creazione di bucket e sul caricamento di file, consultare [Utilizzo dei bucket Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html) nella *Guida per l'utente di Amazon Simple Storage Service.* 

**Importante**  
Il bucket Amazon S3 che contiene i file di dati deve essere creato nella stessa regione AWS del cluster a meno che non si utilizzi l'opzione [REGION](copy-parameters-data-source-s3.md#copy-region) per specificare la regione in cui si trova il bucket Amazon S3.

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](https://docs.aws.amazon.com//redshift/latest/mgmt/security-network-isolation.html#network-isolation).

È possibile creare un bucket Amazon S3 in una regione specifica selezionando la regione quando si crea il bucket con la console Amazon S3 oppure specificando un endpoint quando si crea il bucket con la CLI o l'API di Amazon S3.

In seguito al caricamento dei dati, verificare che in Amazon S3 siano presenti i file corretti.

**Topics**
+ [Gestione della coerenza dei dati](managing-data-consistency.md)
+ [Caricamento di dati crittografati su Amazon S3](t_uploading-encrypted-data.md)
+ [Verifica della presenza dei file corretti nel bucket](verifying-that-correct-files-are-present.md)

# Gestione della coerenza dei dati
<a name="managing-data-consistency"></a>

Amazon S3 offre una forte read-after-write coerenza per le operazioni COPY, UNLOAD, INSERT (tabella esterna), CREATE EXTERNAL TABLE AS e Amazon Redshift Spectrum sui bucket Amazon S3 in tutte le regioni. AWS Inoltre, le operazioni di lettura su Amazon S3 Select, gli elenchi di controllo accessi (ACL) di Amazon S3, i tag oggetto Amazon S3 e i metadati degli oggetti (ad esempio oggetto HEAD) sono fortemente consistenti. Per informazioni più dettagliate sulla coerenza dei dati, consultare [Modello di consistenza dei dati di Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Introduction.html#ConsistencyModel) nella *Guida per l'utente di Amazon Simple Storage Service*.

# Caricamento di dati crittografati su Amazon S3
<a name="t_uploading-encrypted-data"></a>

Amazon S3 supporta sia la crittografia lato server sia la crittografia lato client. In questo argomento vengono discusse le differenze tra la crittografia lato server e quella lato client e vengono descritte le fasi per utilizzare la crittografia lato client con Amazon Redshift. La crittografia lato server è trasparente per Amazon Redshift. 

## Crittografia lato server
<a name="server-side-encryption"></a>

La crittografia lato server è una crittografia dei dati a riposo, vale a dire che Amazon S3 consente di crittografare i dati durante il caricamento e ne esegue la decrittografia quando avviene l'accesso. Quando si esegue il caricamento delle tabelle utilizzando un comando COPY, non esiste differenza nel modo in cui si esegue il caricamento da oggetti non crittografati o crittografati lato server in Amazon S3. Per ulteriori informazioni sulla crittografia lato server, consultare [Utilizzo della crittografia lato server](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html) nella *Guida per l'utente di Amazon Simple Storage Service*.

## Crittografia lato client
<a name="client-side-encryption"></a>

Nella crittografia lato client, l'applicazione client gestisce la crittografia dei dati, le chiavi di crittografia e gli strumenti correlati. È possibile caricare i dati in un bucket Amazon S3 utilizzando la crittografia lato client, quindi caricare i dati utilizzando il comando COPY con l'opzione ENCRYPTED e una chiave di crittografia privata per fornire maggiore sicurezza.

Crittografi i dati utilizzando la crittografia envelope. Con la *crittografia envelope,* l'applicazione gestisce tutta la crittografia in modo esclusivo. Le tue chiavi di crittografia private e i tuoi dati non crittografati non vengono mai inviati a AWS, quindi è molto importante gestire in modo sicuro le chiavi di crittografia. Se perdi le chiavi di crittografia, non sarai in grado di decrittografare i dati e non potrai recuperarle da. AWS La crittografia envelope combina le prestazioni della crittografia simmetrica rapida, mantenendo al contempo la maggiore sicurezza fornita dalla gestione delle chiavi con chiavi asimmetriche. Una chiave one-time-use simmetrica (la chiave simmetrica dell'involucro) viene generata dal client di crittografia Amazon S3 per crittografare i dati, quindi tale chiave viene crittografata dalla chiave principale e archiviata insieme ai dati in Amazon S3. Quando Amazon Redshift accede ai dati durante un caricamento, la chiave simmetrica crittografata viene recuperata e decrittografata con la chiave reale, quindi i dati vengono decrittografati.

Per lavorare con i dati crittografati lato client di Amazon S3 in Amazon Redshift, seguire la procedura descritta in [Protezione dei dati con la crittografia lato client](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingClientSideEncryption.html) nella *Guida per l'utente di Amazon Simple Storage Service*, con i requisiti aggiuntivi utilizzati:
+ **Crittografia simmetrica**: la classe di AWS SDK per Java `AmazonS3EncryptionClient` utilizza la crittografia envelope, descritta in precedenza, che si basa sulla crittografia della chiave simmetrica. Utilizzare questa classe per creare un client Amazon S3 per caricare dati crittografati lato client.
+ **Una chiave simmetrica root AES a 256 bit**: una chiave root crittografa la chiave envelope. Trasferisci la chiave root all'istanza della chiave `AmazonS3EncryptionClient`. Salvare questa chiave, perché sarà necessaria per copiare i dati in Amazon Redshift.
+ **Metadati oggetto per archiviare la chiave envelope crittografata**: per impostazione predefinita, Amazon S3 archivia la chiave envelope come metadati degli oggetti per la classe `AmazonS3EncryptionClient`. La chiave envelope crittografata che viene archiviata come metadati degli oggetti viene utilizzata durante il processo di decrittografia. 

**Nota**  
Se si ottiene un messaggio indicante un errore di crittografia quando si usa l'API di crittografia per la prima volta, la propria versione del JDK potrebbe avere un file di policy per l'ambito di Java Cryptography Extension (JCE) che limita la lunghezza massima della chiave per le trasformazioni di crittografia e decrittografia a 128 bit. Per informazioni su come risolvere questo problema, consulta [Specificare la crittografia lato client utilizzando l'SDK for AWS Java nella Guida per l'](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingClientSideEncryptionUpload.html)utente di *Amazon Simple Storage Service*. 

Per informazioni sul caricamento di file crittografati lato client nelle tabelle Amazon Redshift con il comando COPY, consultare [Caricamento di file di dati crittografati da Amazon S3](c_loading-encrypted-files.md).

## Esempio: caricamento di dati crittografati lato client
<a name="client-side-encryption-example"></a>

Per un esempio di come utilizzare l' AWS SDK for Java per caricare dati crittografati lato client, consulta [Protezione dei dati utilizzando la crittografia lato client nella Guida per](https://docs.aws.amazon.com/AmazonS3/latest/userguide/encrypt-client-side-symmetric-master-key.html) l'utente di *Amazon Simple Storage Service*. 

La seconda opzione illustra le scelte da effettuare durante la crittografia lato client in modo che i dati possano essere caricati in Amazon Redshift. Nello specifico, l'esempio illustra l'uso dei metadati degli oggetti per archiviare la chiave envelope crittografata e l'uso di una chiave simmetrica root AES a 256 bit. 

Questo esempio fornisce un codice di esempio che utilizza l' AWS SDK for Java per creare una chiave radice simmetrica AES a 256 bit e salvarla in un file. Successivamente, nell'esempio viene caricato un oggetto in Amazon S3 utilizzando un client di crittografia S3 che prima crittografa i dati di esempio sul lato client. Nell'esempio si scarica anche l'oggetto e si verifica che i dati corrispondano.

# Verifica della presenza dei file corretti nel bucket
<a name="verifying-that-correct-files-are-present"></a>

Dopo aver caricato i file nel bucket Amazon S3, consigliamo di elencare i contenuti del bucket per verificare che siano presenti tutti i file corretti e che non siano presenti file indesiderati. Ad esempio, se il bucket `amzn-s3-demo-bucket` conserva un file denominato `venue.txt.back`, quel file verrà caricato, forse involontariamente, dal seguente comando:

```
COPY venue FROM 's3://amzn-s3-demo-bucket/venue' … ;
```

Se desideri controllare specificamente quali file sono caricati, è possibile utilizzare un file manifest per elencare in modo esplicito i file di dati. Per ulteriori informazioni sull'utilizzo di un file manifest, consultare l'[copy_from_s3_manifest_file](copy-parameters-data-source-s3.md#copy-manifest-file)opzione per il comando COPY e [Utilizzo di un manifest per specificare i fili di dati](r_COPY_command_examples.md#copy-command-examples-manifest) negli esempi COPY. 

Per ulteriori informazioni sull'elenco dei contenuti del bucket, consultare [Elenco delle chiavi degli oggetti](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ListingKeysUsingAPIs.html) nella *Guida per gli sviluppatori di Amazon S3*.

# Utilizzo del comando COPY per il caricamento da Amazon S3
<a name="t_loading-tables-from-s3"></a>

Utilizzare il comando [COPY](r_COPY.md) per caricare una tabella in parallelo dai file di dati in Amazon S3. È possibile specificare i file da caricare tramite il prefisso di un oggetto Amazon S3 o un file manifest.

La sintassi per specificare un file caricare tramite un prefisso è la seguente.

```
COPY <table_name> FROM 's3://<bucket_name>/<object_prefix>'
authorization;
```

 Il file manifest è un file in formato JSON che elenca i file di dati da caricare. La sintassi per specificare un file caricare tramite un file manifest è la seguente.

```
COPY <table_name> FROM 's3://<bucket_name>/<manifest_file>'
authorization
MANIFEST;
```

La tabella da caricare deve esistere già nel database. Per ulteriori informazioni sulla creazione di una tabella, consultare [CREATE TABLE](r_CREATE_TABLE_NEW.md) nel riferimento SQL. 

I valori per *l'autorizzazione* forniscono l' AWS autorizzazione necessaria ad Amazon Redshift per accedere agli oggetti Amazon S3. Per informazioni sulle autorizzazioni richieste, consultare [Autorizzazioni IAM per COPY, UNLOAD e CREATE LIBRARY](copy-usage_notes-access-permissions.md#copy-usage_notes-iam-permissions). Il metodo preferito per l'autenticazione è specificare il parametro IAM\$1ROLE e fornire l'Amazon Resource Name (ARN) per un ruolo IAM con le autorizzazioni necessarie. Per ulteriori informazioni, consulta [Controllo degli accessi basato sui ruoli](copy-usage_notes-access-permissions.md#copy-usage_notes-access-role-based). 

Per eseguire l'autenticazione utilizzando il parametro IAM\$1ROLE, sostituiscilo con *<aws-account-id>* e *<role-name>* come mostrato nella sintassi seguente. 

```
IAM_ROLE 'arn:aws:iam::<aws-account-id>:role/<role-name>'
```

L'esempio seguente mostra l'autenticazione utilizzando un ruolo IAM.

```
COPY customer 
FROM 's3://amzn-s3-demo-bucket/mydata' 
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

Per ulteriori informazioni su altre opzioni di autorizzazione, consulta [Parametri di autorizzazione](copy-parameters-authorization.md)

Se desideri convalidare i dati senza caricare effettivamente la tabella, utilizza l'opzione NOLOAD con il comando [COPY](r_COPY.md).

L'esempio seguente mostra le prime righe di dati delimitati da barra verticale in un file denominato `venue.txt`.

```
1|Toyota Park|Bridgeview|IL|0
2|Columbus Crew Stadium|Columbus|OH|0
3|RFK Stadium|Washington|DC|0
```

Prima di caricare il file in Amazon S3, dividere il file in più file in modo che il comando COPY possa caricarlo utilizzando l'elaborazione parallela. Il numero di file deve essere un multiplo del numero di sezioni nel cluster. Suddividi i file di dati di caricamento di modo che siano all'incirca della stessa dimensione, tra 1 MB e 1 GB dopo la compressione. Per ulteriori informazioni, consulta [Caricamento dei dati da file compressi e non compressi](t_splitting-data-files.md).

Ad esempio, il file `venue.txt` può essere diviso in quattro file, come segue:

```
venue.txt.1
venue.txt.2
venue.txt.3
venue.txt.4
```

Il comando seguente COPY carica la tabella VENUE utilizzando i dati delimitati da barra verticale nei file di dati con il prefisso “venue” nel bucket Amazon S3 `amzn-s3-demo-bucket`. 

**Nota**  
Il bucket Amazon S3 `amzn-s3-demo-bucket` nei seguenti esempi non esiste. Per i comandi COPY di esempio che utilizzano dati reali in un bucket Amazon S3 esistente, consultare [Caricamento dei dati di esempio](https://docs.aws.amazon.com/redshift/latest/gsg/cm-dev-t-load-sample-data.html).

```
COPY venue FROM 's3://amzn-s3-demo-bucket/venue'
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
DELIMITER '|';
```

Se non esiste alcun oggetto Amazon S3 con prefisso della chiave 'venue', il caricamento non riesce.

**Topics**
+ [Utilizzo di un manifest per specificare i fili di dati](loading-data-files-using-manifest.md)
+ [Caricamento di file di dati compressi da Amazon S3](t_loading-gzip-compressed-data-files-from-S3.md)
+ [Caricamento di dati a larghezza fissa da Amazon S3](t_loading_fixed_width_data.md)
+ [Caricamento di dati multibyte da Amazon S3](t_loading_unicode_data.md)
+ [Caricamento di file di dati crittografati da Amazon S3](c_loading-encrypted-files.md)

# Utilizzo di un manifest per specificare i fili di dati
<a name="loading-data-files-using-manifest"></a>

Puoi utilizzare un manifesto per assicurare che per un caricamento di dati il comando COPY carichi tutti i file richiesti e solo quelli. È possibile utilizzare un manifest per caricare file da diversi bucket o file che non condividono lo stesso prefisso. Anziché fornire il percorso di un oggetto per il comando COPY, fornisci il nome per un file di testo in formato JSON che elenca in modo esplicito i file da caricare. L'URL nel manifest deve specificare il nome bucket e il percorso completo dell'oggetto per il file, non solo un prefisso.

Per ulteriori informazioni sui file manifest, consultare l'esempio di comando COPY [Utilizzo di un manifest per specificare i file di dati](r_COPY_command_examples.md#copy-command-examples-manifest).

L'esempio seguente mostra il JSON per il caricamento dei file da diversi bucket e con nomi di file che iniziano con stamp di data.

```
{
  "entries": [
    {"url":"s3://amzn-s3-demo-bucket1/2013-10-04-custdata", "mandatory":true},
    {"url":"s3://amzn-s3-demo-bucket1/2013-10-05-custdata", "mandatory":true},
    {"url":"s3://amzn-s3-demo-bucket2/2013-10-04-custdata", "mandatory":true},
    {"url":"s3://amzn-s3-demo-bucket2/2013-10-05-custdata", "mandatory":true}
  ]
}
```

Il flag `mandatory` facoltativo specifica se COPY deve restituire un errore qualora il file non venga trovato. Il valore predefinito di `mandatory` è `false`. Indipendentemente da eventuali impostazioni obbligatorie, COPY terminerà se non vengono trovati file. 

L'esempio seguente esegue il comando COPY con manifest nell'esempio precedente, che viene denominato `cust.manifest`. 

```
COPY customer
FROM 's3://amzn-s3-demo-bucket/cust.manifest' 
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
MANIFEST;
```

## Utilizzo di un manifest creato da UNLOAD
<a name="loading-data-files-using-unload-manifest"></a>

Un manifest creato da un'operazione [UNLOAD](r_UNLOAD.md) utilizzando il parametro MANIFEST potrebbe avere chiavi non richieste per l'operazione di COPY. Ad esempio, il manifest `UNLOAD` seguente include una chiave `meta` necessaria per una tabella esterna di Amazon Redshift Spectrum e per il caricamento di file di dati in formato `ORC` o `Parquet`. La chiave `meta` contiene una chiave `content_length` con un valore che rappresenta le dimensioni effettive del file in byte. L'operazione di COPY richiede solo la chiave `url` e una chiave opzionale `mandatory`.

```
{
  "entries": [
    {"url":"s3://amzn-s3-demo-bucket/unload/manifest_0000_part_00", "meta": { "content_length": 5956875 }},
    {"url":"s3://amzn-s3-demo-bucket/unload/unload/manifest_0001_part_00", "meta": { "content_length": 5997091 }}
 ]
}
```

Per ulteriori informazioni sui file manifest, consulta [Utilizzo di un manifest per specificare i fili di dati](r_COPY_command_examples.md#copy-command-examples-manifest).

# Caricamento di file di dati compressi da Amazon S3
<a name="t_loading-gzip-compressed-data-files-from-S3"></a>

Per caricare file di dati compressi utilizzando gzip, lzop o bzip2, includete l'opzione corrispondente: GZIP, LZOP o. BZIP2

Ad esempio, il seguente comando carica da file compressi utilizzando lzop.

```
COPY customer FROM 's3://amzn-s3-demo-bucket/customer.lzo' 
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
DELIMITER '|' LZOP;
```

**Nota**  
Se comprimi un file di dati con la compressione lzop e usi l’opzione *--filter*, il comando COPY non la supporta.

# Caricamento di dati a larghezza fissa da Amazon S3
<a name="t_loading_fixed_width_data"></a>

I file di dati a larghezza fissa hanno lunghezze uniformi per ciascuna colonna di dati. Ogni campo in un file di dati a larghezza fissa ha esattamente la stessa lunghezza e la stessa posizione. Per i dati di carattere (CHAR e VARCHAR) in un file di dati a larghezza fissa, è necessario includere spazi iniziali o finali come segnaposti per mantenere uniforme la larghezza. Per gli interi, è necessario utilizzare gli zero iniziali come segnaposti. Un file di dati a larghezza fissa non ha delimitatori per separare le colonne.

Per caricare un file di dati a larghezza fissa in una tabella esistente, UTILIZZA il parametro FIXEDWIDTH nel comando COPY. Le specifiche della tabella devono corrispondere al valore di fixedwidth\$1spec affinché i dati vengano caricati correttamente.

Per caricare dati a larghezza fissa da un file a una tabella, emetti il seguente comando:

```
COPY table_name FROM 's3://amzn-s3-demo-bucket/prefix' 
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' 
FIXEDWIDTH 'fixedwidth_spec';
```

Il parametro *fixedwidth\$1spec* è una stringa che contiene un identificatore per ogni colonna e la larghezza di ogni colonna, separati da due punti. Le coppie **column:width** sono delimitate da virgole. L'identificatore può essere qualsiasi elemento desiderato: numeri, lettere o una combinazione dei due. L'identificatore non ha alcuna relazione con la tabella stessa, quindi la specifica deve contenere le colonne nello stesso ordine della tabella.

I seguenti due esempi mostrano la stessa specifica, il primo con identificatori numerici e il secondo con identificatori di stringa:

```
'0:3,1:25,2:12,3:2,4:6'
```

```
'venueid:3,venuename:25,venuecity:12,venuestate:2,venueseats:6'
```

Il seguente esempio mostra dati di esempio a larghezza fissa che potrebbero essere caricati nella tabella VENUE utilizzando le specifiche precedenti:

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

Il seguente comando COPY carica questo set di dati nella tabella VENUE:

```
COPY venue
FROM 's3://amzn-s3-demo-bucket/data/venue_fw.txt' 
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' 
FIXEDWIDTH 'venueid:3,venuename:25,venuecity:12,venuestate:2,venueseats:6';
```

# Caricamento di dati multibyte da Amazon S3
<a name="t_loading_unicode_data"></a>

Se i dati includono caratteri multibyte non ASCII (ad esempio caratteri cinesi o cirillici), è necessario caricare i dati nelle colonne VARCHAR. Il tipo di dati VARCHAR supporta caratteri UTF-8 a quattro byte, ma il tipo di dati CHAR accetta solo caratteri ASCII a byte singolo. Non è possibile caricare caratteri a cinque byte o più lunghi nelle tabelle Amazon Redshift. Per ulteriori informazioni su CHAR e VARCHAR, consulta [Tipi di dati](c_Supported_data_types.md).

Per verificare quale codifica utilizza un file di input, utilizza il comando * `file` * di Linux: 

```
$ file ordersdata.txt
ordersdata.txt: ASCII English text
$ file uni_ordersdata.dat
uni_ordersdata.dat: UTF-8 Unicode text
```

# Caricamento di file di dati crittografati da Amazon S3
<a name="c_loading-encrypted-files"></a>

È possibile utilizzare il comando COPY per caricare i file di dati che sono stati caricati in Amazon S3 utilizzando la crittografia lato server, la crittografia lato client o entrambe. 

Il comando COPY supporta i seguenti tipi di crittografia Amazon S3:
+ Crittografia lato server con chiavi gestite da Amazon S3 (SSE-S3)
+  AWS KMS keys Crittografia lato server con (SSE-KMS)
+ Crittografia lato server con una chiave root simmetrica lato client

Il comando COPY non supporta i seguenti tipi di crittografia Amazon S3:
+ Crittografia lato server con chiavi fornite dal cliente (SSE-C)
+ Crittografia lato client utilizzando un AWS KMS key
+ Crittografia lato client utilizzando una chiave root asimmetrica fornita dal cliente

Per ulteriori informazioni sulla crittografia Amazon S3, consultare [Protezione dei dati con la crittografia lato server](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) e [Protezione dei dati con la crittografia lato client](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingClientSideEncryption.html) nella Guida per l'utente di Amazon Simple Storage Service.

Il comando [UNLOAD](r_UNLOAD.md) crittografa automaticamente i file utilizzando SSE-S3. È inoltre possibile scaricare utilizzando la crittografia SSE-KMS o la crittografia lato client con una chiave simmetrica gestita dal cliente. Per ulteriori informazioni, consulta [Scaricamento di file di dati crittografati](t_unloading_encrypted_files.md)

Il comando COPY riconosce e carica automaticamente i file crittografati utilizzando SSE-S3 e SSE-KMS. È possibile caricare i file crittografati utilizzando una chiave root simmetrica lato client specificando l'opzione ENCRYPTED e fornendo il valore della chiave. Per ulteriori informazioni, consulta [Caricamento di dati crittografati su Amazon S3](t_uploading-encrypted-data.md).

Per caricare i file di dati crittografati lato client, fornisci il valore della chiave root utilizzando il parametro MASTER\$1SYMMETRIC\$1KEY e includi l'opzione ENCRYPTED.

```
COPY customer FROM 's3://amzn-s3-demo-bucket/encrypted/customer' 
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
MASTER_SYMMETRIC_KEY '<root_key>' 
ENCRYPTED
DELIMITER '|';
```

Per caricare file di dati crittografati compressi con gzip, lzop o bzip2, includi l'opzione GZIP, LZOP o insieme al valore della chiave root e all' BZIP2 opzione ENCRYPTED.

```
COPY customer FROM 's3://amzn-s3-demo-bucket/encrypted/customer' 
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
MASTER_SYMMETRIC_KEY '<root_key>'
ENCRYPTED 
DELIMITER '|' 
GZIP;
```