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

Amazon Redshift non supporterà più la creazione di nuove UDF Python a partire dal 1º novembre 2025. Se desideri utilizzare le UDF Python, creale prima di tale data. Le UDF Python esistenti continueranno a funzionare normalmente. Per ulteriori informazioni, consulta il post del blog.

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 di authorization forniscono l’autorizzazione AWS necessaria ad Amazon Redshift 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://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

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

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.