Uso del comando COPY para cargar desde Amazon S3 - Amazon Redshift

Uso del comando COPY para cargar desde Amazon S3

Uso del comando COPY para cargar una tabla en paralelo desde los archivos de datos en Amazon S3. Puede especificar los archivos que se cargarán mediante un prefijo de objeto de Amazon S3 o un archivo de manifiesto.

La sintaxis para especificar los archivos por cargar mediante el uso de un prefijo es la siguiente:

copy <table_name> from 's3://<bucket_name>/<object_prefix>' authorization;

El archivo de manifiesto es un archivo con formato JSON que lista los archivos de datos que se deben cargar. La sintaxis para especificar los archivos por cargar mediante el uso de un archivo de manifiesto es la siguiente:

copy <table_name> from 's3://<bucket_name>/<manifest_file>' authorization manifest;

La tabla que se cargará ya debe existir en la base de datos. Para obtener más información acerca de la creación de una tabla, consulte CREATE TABLE en la referencia de SQL.

Los valores de authorization (autorización) le otorgan la autorización de AWS que el clúster necesita para obtener acceso a los objetos de Amazon S3. Para obtener más información acerca de los permisos necesarios, consulte Permisos de IAM para COPY, UNLOAD y CREATE LIBRARY. El método de autenticación preferido es especificar el parámetro IAM_ROLE y proporcionar el Amazon Resource Name (ARN, Nombre de recurso de Amazon) de un rol de IAM con los permisos necesarios. Para obtener más información, consulte Control de acceso con base en roles .

Para realizar la autenticación con el parámetro IAM_ROLE, reemplace <aws-account-id> y <role-name>, tal y como se observa en la siguiente sintaxis.

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

En el siguiente ejemplo, se muestra la autenticación con un rol de IAM.

copy customer from 's3://mybucket/mydata' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Para obtener más información acerca de otras opciones de autorización, consulte Parámetros de autorización.

Si desea validar los datos sin cargar de hecho la tabla, use la opción NOLOAD con el comando COPY.

En el siguiente ejemplo, se muestran las primeras filas de datos delimitados por barras verticales en un archivo denominado venue.txt.

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

Antes de cargar el archivo en Amazon S3, divídalo en distintos archivos para que el comando COPY pueda cargarlo usando el procesamiento en paralelo. La cantidad de archivos debe ser múltiplo de la cantidad de secciones en su clúster. Divida los archivos de datos de carga de modo tal que sean de igual tamaño, entre 1 MB y 1 GB, después de la compresión. Para obtener más información, consulte Carga de datos desde archivos comprimidos y sin comprimir.

Por ejemplo, el archivo venue.txt podría dividirse en cuatro archivos, de la siguiente manera:

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

El siguiente comando COPY carga la tabla VENUE con datos delimitados por barras verticales en los archivos de datos con el prefijo “venue” del bucket mybucket de Amazon S3.

nota

El bucket mybucket de Amazon S3 no está presente en los siguientes ejemplos. Para ver información acerca de comandos COPY de muestra que usan datos reales de un bucket de Amazon S3 existente, consulte Carga de datos de muestra.

copy venue from 's3://mybucket/venue' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' delimiter '|';

Si no hay objetos de Amazon S3 con el prefijo de clave “venue”, se producirá un error en la carga.