Utilizzo del comando COPY per il caricamento da Amazon S3 - Amazon Redshift

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

Utilizzo del comando COPY per il caricamento da Amazon S3

Utilizzare il comando COPY 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 nel riferimento SQL.

I valori per l'autorizzazione forniscono l' AWS autorizzazione necessaria al cluster per accedere agli oggetti Amazon S3. Per informazioni sulle autorizzazioni richieste, consultare Autorizzazioni IAM per COPY, UNLOAD e CREATE LIBRARY. Il metodo preferito per l'autenticazione è specificare il parametro IAM_ROLE e fornire l'Amazon Resource Name (ARN) per un ruolo IAM con le autorizzazioni necessarie. Per ulteriori informazioni, consultare . Controllo degli accessi basato sui ruoli .

Per effettuare l'autenticazione utilizzando il parametro IAM_ROLE, sostituisci <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://mybucket/mydata' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Per ulteriori informazioni su altre opzioni di autorizzazione, consulta Parametri di autorizzazione

Se desideri convalidare i dati senza caricare effettivamente la tabella, utilizza l'opzione NOLOAD con il comando COPY.

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.

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

Nota

Il bucket Amazon S3 mybucket 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.

copy venue from 's3://mybucket/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.