COPY de Amazon S3 - Amazon Redshift

COPY de Amazon S3

Para cargar datos de archivos ubicados en uno o más buckets de S3, utilice la cláusula FROM para indicar el modo en que COPY localiza los archivos de Amazon S3. Puede proporcionar la ruta de objeto a los archivos de datos como parte de la cláusula FROM o puede proporcionar la ubicación de un archivo de manifiesto que contenga una lista de rutas de objetos de Amazon S3. COPY de Amazon S3 utiliza una conexión HTTPS. Asegúrese de que los rangos de IP de S3 estén agregados a la lista de permitidos. Para obtener más información acerca de los rangos de IP de S3 necesarios, consulte Aislamiento de red.

importante

Si los buckets de Amazon S3 que contienen los archivos de datos no se encuentran en la misma región de AWS que el clúster, debe utilizar el parámetro REGION para especificar la región en la que se encuentran los datos.

Sintaxis

FROM { 's3://objectpath' | 's3://manifest_file' } authorization | MANIFEST | ENCRYPTED | REGION [AS] 'aws-region' | optional-parameters

Ejemplos

En el siguiente ejemplo, se utiliza una ruta de objeto para cargar datos desde Amazon S3.

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

En el siguiente ejemplo, se utiliza un archivo de manifiesto para cargar datos desde Amazon S3.

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

Parámetros

FROM

El origen de los datos a cargar. Para obtener más información acerca de la codificación del archivo de Amazon S3, consulte Parámetros de conversión de datos.

's3://copy_from_s3_objectpath'

Especifica la ruta a los objetos de Amazon S3 que contienen los datos; por ejemplo, 's3://mybucket/custdata.txt'. El parámetro s3://copy_from_s3_objectpath puede hacer referencia a un único archivo o a un conjunto de objetos o carpetas que tienen el mismo prefijo de clave. Por ejemplo, el nombre custdata.txt es un prefijo de clave que hace referencia a un número de archivos físicos: custdata.txt, custdata.txt.1, custdata.txt.2, custdata.txt.bak y así sucesivamente. El prefijo de clave también puede hacer referencia a un número de carpetas. Por ejemplo, 's3://mybucket/custfolder' hace referencia a las carpetas custfolder, custfolder_1, custfolder_2 y así sucesivamente. Si un prefijo de clave hace referencia a varias carpetas, se cargan todos los archivos de esas carpetas. Si un prefijo de clave coincide con un archivo y, a su vez, con una carpeta, como custfolder.log, COPY también intenta cargar el archivo. Si un prefijo de clave puede dar lugar a que COPY intente cargar archivos no deseados, utilice un archivo de manifiesto. Para obtener más información, consulte copy_from_s3_manifest_file, a continuación.

importante

Si el bucket de S3 que contiene los archivos de datos no se encuentra en la misma región de AWS que el clúster, debe utilizar el parámetro REGION para especificar la región en la que se encuentran los datos.

Para obtener más información, consulte Carga de datos desde Amazon S3.

's3://copy_from_s3_manifest_file'

Especifica la clave de objeto de Amazon S3 para un archivo de manifiesto que muestra los archivos de datos que se cargarán. El argumento 's3://copy_from_s3_manifest_file' debe referenciar de forma explícita un solo archivo; por ejemplo, 's3://mybucket/manifest.txt'. No puede hacer referencia a un prefijo de clave.

El manifiesto es un archivo de texto en formato JSON que muestra la dirección URL de cada archivo que se cargará desde Amazon S3. El URL incluye el nombre del bucket y la ruta de objeto completa para el archivo. Los archivos que se especifican en el manifiesto pueden estar en buckets diferentes, pero todos los buckets deben estar en la misma región de AWS que el clúster de Amazon Redshift. Si un archivo aparece dos veces, este se carga dos veces. En el siguiente ejemplo, se muestra el JSON para un manifiesto que carga tres archivos.

{ "entries": [ {"url":"s3://mybucket-alpha/custdata.1","mandatory":true}, {"url":"s3://mybucket-alpha/custdata.2","mandatory":true}, {"url":"s3://mybucket-beta/custdata.1","mandatory":false} ] }

Se requieren caracteres de comillas dobles y estas deben ser las comillas simples (0x22), no las comillas inclinadas o “inteligentes”. Cada entrada en el manifiesto puede incluir opcionalmente una marca mandatory. Cuando mandatory está establecido en true, COPY termina si no encuentra el archivo de esa entrada. De lo contrario, COPY continúa. El valor predeterminado de mandatory es false.

Cuando la carga se realiza a partir de archivos de datos con formato ORC o Parquet, se necesita un campo meta, tal y como se muestra en el siguiente ejemplo.

{ "entries":[ { "url":"s3://mybucket-alpha/orc/2013-10-04-custdata", "mandatory":true, "meta":{ "content_length":99 } }, { "url":"s3://mybucket-beta/orc/2013-10-05-custdata", "mandatory":true, "meta":{ "content_length":99 } } ] }

El archivo de manifiesto no debe estar cifrado o comprimido, incluso si se especifican las opciones ENCRYPTED, GZIP, LZOP, BZIP2 o ZSTD. COPY devuelve un error si el archivo de manifiesto especificado no se encuentra o no se creó de forma correcta.

Si se utiliza un archivo de manifiesto, se debe especificar el parámetro MANIFEST con el comando COPY. Si no se especifica el parámetro MANIFEST, COPY supone que el archivo especificado con FROM es un archivo de datos.

Para obtener más información, consulte Carga de datos desde Amazon S3.

authorization

El comando COPY necesita autorización para acceder a los datos de otro recurso de AWS, incluidos los recursos de Amazon S3, Amazon EMR, Amazon DynamoDB y Amazon EC2. Puede proporcionar esa autorización referenciando un rol de AWS Identity and Access Management (IAM) que esté adjunto al clúster (control de acceso basado en roles) o proporcionando las credenciales de acceso de un usuario (control de acceso basado en claves). Para mayor seguridad y flexibilidad, le recomendamos utilizar un control de acceso basado en roles de IAM. Para obtener más información, consulte Parámetros de autorización.

MANIFEST

Especifica que se utiliza un manifiesto para identificar los archivos de datos que se cargarán desde Amazon S3. Si se utiliza el parámetro MANIFEST, COPY carga los datos de los archivos que se muestran en el manifiesto al que se hace referencia en 's3://copy_from_s3_manifest_file'. Si no se encuentra el archivo de manifiesto o no se creó de forma correcta, COPY no se ejecuta correctamente. Para obtener más información, consulte Uso de un manifiesto para especificar archivos de datos.

ENCRYPTED

Se trata de una cláusula que especifica que los archivos de entrada en Amazon S3 están cifrados con el cifrado del lado del cliente con claves administradas por el cliente. Para obtener más información, consulte Carga de archivos de datos cifrados desde Amazon S3. No especifique ENCRYPTED si los archivos de entrada están cifrados con el cifrado de servidor de Amazon S3 (SSE-KMS o SSE-S3). COPY lee automáticamente los archivos con cifrados del servidor.

Si especifica el parámetro ENCRYPTED, también debe especificar el parámetro MASTER_SYMMETRIC_KEY o incluir el valor master_symmetric_key en la cadena CREDENTIALS.

Si los archivos cifrados están en un formato comprimido, agregue el parámetro GZIP, LZOP, BZIP2 o ZSTD.

Los archivos de manifiesto y los archivos JSONPaths no deben cifrarse aunque la opción ENCRYPTED esté especificada.

MASTER_SYMMETRIC_KEY 'root_key'

Se trata de la clave raíz simétrica que se utilizó para cifrar los archivos de datos en Amazon S3. Si se especifica MASTER_SYMMETRIC_KEY, también se debe especificar el parámetro ENCRYPTED. MASTER_SYMMETRIC_KEY no puede utilizarse con el parámetro CREDENTIALS. Para obtener más información, consulte Carga de archivos de datos cifrados desde Amazon S3.

Si los archivos cifrados están en un formato comprimido, agregue el parámetro GZIP, LZOP, BZIP2 o ZSTD.

REGION [AS] 'aws_region'

Especifica la región de AWS en la que se encuentran los datos de origen. Cuando el recurso de AWS que contiene los datos no se encuentra en la misma región que el clúster de Amazon Redshift, se debe utilizar REGION para el comando COPY de un bucket de Amazon S3 o una tabla de DynamoDB

El valor de aws_region debe coincidir con una de las regiones que aparecen en la tabla Regiones y puntos de enlace de Amazon Redshift.

Si se especifica el parámetro REGION, todos los recursos, incluidos un archivo de manifiesto o varios buckets de Amazon S3, deben encontrarse en la región especificada.

nota

La transferencia de datos entre regiones genera cargos adicionales en el bucket de Amazon S3 o la tabla de DynamoDB que contiene los datos. Para obtener más información acerca de los precios, consulte Transferencia SALIENTE de datos de Amazon S3 a otra región de AWS en la página Precios de Amazon S3 y Transferencia SALIENTE de datos en la página Precios de Amazon DynamoDB.

De manera predeterminada, COPY supone que los datos se encuentran en la misma región que el clúster de Amazon Redshift.

Parámetros opcionales

Si lo prefiere, puede especificar los siguientes parámetros con COPY de Amazon S3:

Parámetros no admitidos

No puede utilizar los siguientes parámetros con COPY de Amazon S3:

  • SSH

  • READRATIO