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://amzn-s3-demo-bucket/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://amzn-s3-demo-bucket/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://amzn-s3-demo-bucket/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 nombrecustdata.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://amzn-s3-demo-bucket/custfolder'
hace referencia a las carpetascustfolder
,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, comocustfolder.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://amzn-s3-demo-bucket/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://amzn-s3-demo-bucket1/custdata.1","mandatory":true}, {"url":"s3://amzn-s3-demo-bucket1/custdata.2","mandatory":true}, {"url":"s3://amzn-s3-demo-bucket2/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
. Cuandomandatory
está establecido entrue
, COPY termina si no encuentra el archivo de esa entrada. De lo contrario, COPY continúa. El valor predeterminado demandatory
esfalse
.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://amzn-s3-demo-bucket1/orc/2013-10-04-custdata", "mandatory":true, "meta":{ "content_length":99 } }, { "url":"s3://amzn-s3-demo-bucket2/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