

 Amazon Redshift dejará de admitir la creación de nuevas UDF de Python a partir del parche 198. Las UDF de Python existentes seguirán funcionando hasta el 30 de junio de 2026. Para obtener más información, consulte la [publicación del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Uso del comando COPY para cargar desde Amazon S3
<a name="t_loading-tables-from-s3"></a>

Uso del comando [COPY](r_COPY.md) 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](r_CREATE_TABLE_NEW.md) en la referencia de SQL. 

Los valores de *autorización* proporcionan la autorización de AWS que Amazon Redshift necesita para acceder 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](copy-usage_notes-access-permissions.md#copy-usage_notes-iam-permissions). El método de autenticación preferido es especificar el parámetro IAM\$1ROLE 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](copy-usage_notes-access-permissions.md#copy-usage_notes-access-role-based) . 

Para realizar la autenticación con el parámetro IAM\$1ROLE, 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://amzn-s3-demo-bucket/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](copy-parameters-authorization.md)

Si desea validar los datos sin cargar de hecho la tabla, use la opción NOLOAD con el comando [COPY](r_COPY.md).

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](t_splitting-data-files.md).

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 de Amazon S3 `amzn-s3-demo-bucket`. 

**nota**  
El bucket `amzn-s3-demo-bucket` 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](https://docs.aws.amazon.com/redshift/latest/gsg/cm-dev-t-load-sample-data.html).

```
COPY venue FROM 's3://amzn-s3-demo-bucket/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.

**Topics**
+ [Uso de un manifiesto para especificar archivos de datos](loading-data-files-using-manifest.md)
+ [Carga de archivos de datos comprimidos desde Amazon S3](t_loading-gzip-compressed-data-files-from-S3.md)
+ [Carga de datos de ancho fijo desde Amazon S3](t_loading_fixed_width_data.md)
+ [Carga de datos multibyte desde Amazon S3](t_loading_unicode_data.md)
+ [Carga de archivos de datos cifrados desde Amazon S3](c_loading-encrypted-files.md)

# Uso de un manifiesto para especificar archivos de datos
<a name="loading-data-files-using-manifest"></a>

Puede usar un manifiesto para asegurarse de que el comando COPY cargue todos los archivos requeridos, y solo los requeridos, en la carga de datos. Puede usar un manifiesto para cargar archivos de diferentes buckets o archivos que no comparten el mismo prefijo. En lugar de proporcionar la ruta de un objeto para el comando COPY, se proporciona el nombre de un archivo de texto en formato JSON que lista explícitamente los archivos por cargar. El URL en el manifiesto debe especificar el nombre del bucket y la ruta completa del objeto para el archivo, no solo un prefijo.

Para obtener más información acerca de los archivos de manifiesto, consulte el ejemplo COPY [Uso de un manifiesto para especificar archivos de datos](r_COPY_command_examples.md#copy-command-examples-manifest).

En el siguiente ejemplo, se muestra el JSON para cargar archivos de diferentes buckets y con nombres de archivo que comiencen con marcas de fecha.

```
{
  "entries": [
    {"url":"s3://amzn-s3-demo-bucket1/2013-10-04-custdata", "mandatory":true},
    {"url":"s3://amzn-s3-demo-bucket1/2013-10-05-custdata", "mandatory":true},
    {"url":"s3://amzn-s3-demo-bucket2/2013-10-04-custdata", "mandatory":true},
    {"url":"s3://amzn-s3-demo-bucket2/2013-10-05-custdata", "mandatory":true}
  ]
}
```

La marca opcional `mandatory` especifica si COPY debe devolver un error en caso de que el archivo no se encuentre. El valor predeterminado de `mandatory` es `false`. Independientemente de cualquier configuración obligatoria, COPY terminará si no se encuentran archivos. 

En el siguiente ejemplo, se ejecuta el comando COPY con el manifiesto del ejemplo anterior, que se denomina `cust.manifest`. 

```
COPY customer
FROM 's3://amzn-s3-demo-bucket/cust.manifest' 
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
MANIFEST;
```

## Uso de un manifiesto creado por UNLOAD
<a name="loading-data-files-using-unload-manifest"></a>

Un manifiesto creado por una operación [UNLOAD](r_UNLOAD.md) que usa el parámetro MANIFEST podría tener claves no requeridas para la operación COPY. Por ejemplo, en el siguiente manifiesto de `UNLOAD`, se incluye una clave `meta` que es necesaria para una tabla externa de Amazon Redshift Spectrum y para cargar archivos de datos con el formato `ORC` o `Parquet`. La clave `meta` contiene una clave `content_length` con un valor que es el tamaño real del archivo en bytes. La operación COPY requiere solo la clave `url` y una clave `mandatory` opcional.

```
{
  "entries": [
    {"url":"s3://amzn-s3-demo-bucket/unload/manifest_0000_part_00", "meta": { "content_length": 5956875 }},
    {"url":"s3://amzn-s3-demo-bucket/unload/unload/manifest_0001_part_00", "meta": { "content_length": 5997091 }}
 ]
}
```

Para obtener más información sobre los archivos de manifiesto, consulte [Uso de un manifiesto para especificar archivos de datos](r_COPY_command_examples.md#copy-command-examples-manifest).

# Carga de archivos de datos comprimidos desde Amazon S3
<a name="t_loading-gzip-compressed-data-files-from-S3"></a>

Para cargar archivos de datos comprimidos con gzip, lzop o bzip2, incluya la opción que corresponda: GZIP, LZOP o BZIP2.

Por ejemplo, el siguiente comando carga desde archivos comprimidos con lzop.

```
COPY customer FROM 's3://amzn-s3-demo-bucket/customer.lzo' 
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
DELIMITER '|' LZOP;
```

**nota**  
Si comprime un archivo de datos con la compresión lzop y utiliza la opción *--filter*, el comando COPY no la admite.

# Carga de datos de ancho fijo desde Amazon S3
<a name="t_loading_fixed_width_data"></a>

Los archivos de datos de ancho fijo tienen longitudes uniformes para cada columna de datos. Cada campo de un archivo con datos de ancho fijo tiene exactamente la misma longitud y posición. En el caso de datos de caracteres (CHAR y VARCHAR) en un archivo de datos de ancho fijo, debe incluir espacios a la izquierda o a la derecha como marcadores de posición, con objeto de mantener la uniformidad del ancho. En el caso de números enteros, se deben usar ceros a la izquierda como marcadores de posición. Un archivo de datos de ancho fijo no tiene delimitador para separar columnas.

Para cargar un archivo de datos de ancho fijo en una tabla existente, USE el parámetro FIXEDWIDTH del comando COPY. Las especificaciones de la tabla deben coincidir con el valor de fixedwidth\$1spec con objeto de que los datos se carguen de manera correcta.

Para cargar datos de ancho fijo en una tabla desde un archivo, emita el siguiente comando:

```
COPY table_name FROM 's3://amzn-s3-demo-bucket/prefix' 
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' 
FIXEDWIDTH 'fixedwidth_spec';
```

El parámetro *fixedwidth\$1spec* es una cadena que contiene un identificador para cada columna y el ancho de cada columna, separados por dos puntos. Los pares **column:width** están delimitados por comas. El identificador puede ser lo que usted elija: números, letras o una combinación de los dos. El identificador no se relaciona con la tabla en sí, por lo que la especificación debe tener las columnas en el mismo orden que la tabla.

En los siguientes dos ejemplos, se observa la misma especificación; la primera usa identificadores numéricos y la segunda usa identificadores de cadena:

```
'0:3,1:25,2:12,3:2,4:6'
```

```
'venueid:3,venuename:25,venuecity:12,venuestate:2,venueseats:6'
```

En el siguiente ejemplo, se muestran datos de muestra de ancho fijo que podrían cargarse en la tabla VENUE con las especificaciones anteriores:

```
1  Toyota Park               Bridgeview  IL0
2  Columbus Crew Stadium     Columbus    OH0
3  RFK Stadium               Washington  DC0
4  CommunityAmerica Ballpark Kansas City KS0
5  Gillette Stadium          Foxborough  MA68756
```

El siguiente comando COPY carga este conjunto de datos en la tabla VENUE:

```
COPY venue
FROM 's3://amzn-s3-demo-bucket/data/venue_fw.txt' 
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' 
FIXEDWIDTH 'venueid:3,venuename:25,venuecity:12,venuestate:2,venueseats:6';
```

# Carga de datos multibyte desde Amazon S3
<a name="t_loading_unicode_data"></a>

Si los datos incluyen caracteres multibyte no ASCII (como caracteres cirílicos o chinos) debe cargar los datos en columnas VARCHAR. El tipo de datos VARCHAR admite caracteres UTF-8 de cuatro bytes, pero el tipo de datos CHAR solo acepta caracteres ASCII de un solo byte. No puede cargar caracteres de cinco bytes o más en tablas de Amazon Redshift. Para obtener más información acerca de los comandos CHAR y VARCHAR, consulte [Tipos de datos](c_Supported_data_types.md).

Para comprobar qué cifrado usa un archivo de entrada, use el comando *`file`* de Linux: 

```
$ file ordersdata.txt
ordersdata.txt: ASCII English text
$ file uni_ordersdata.dat
uni_ordersdata.dat: UTF-8 Unicode text
```

# Carga de archivos de datos cifrados desde Amazon S3
<a name="c_loading-encrypted-files"></a>

Puede usar el comando COPY para cargar archivos de datos cargados en Amazon S3 usando el cifrado del lado del servidor, el cifrado del lado del cliente o de ambos. 

El comando COPY es compatible con los siguientes tipos de cifrado de Amazon S3:
+ Cifrado en el servidor con claves administradas por Amazon S3 (SSE-S3)
+ Cifrado del lado del servidor con AWS KMS keys (SSE-KMS)
+ Cifrado del lado del cliente con una clave raíz simétrica del lado del cliente

El comando COPY no es compatible con los siguientes tipos de cifrado de Amazon S3:
+ Cifrado en el servidor con claves proporcionadas por el cliente (SSE-C)
+ Cifrado del lado del cliente con una AWS KMS key
+ Cifrado del lado del cliente con una clave raíz asimétrica provista por el cliente

Para obtener más información acerca del cifrado de Amazon S3, consulte [Protección de datos con el cifrado del lado del servidor](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) y [Protección de datos con el cifrado del lado del cliente](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingClientSideEncryption.html) en la Guía del usuario de Amazon Simple Storage Service.

El comando [UNLOAD](r_UNLOAD.md) cifra los archivos con SSE-S3 de manera automática. También puede descargar con cifrado del cliente o SSE-KMS con una clave simétrica administrada por el cliente. Para obtener más información, consulte [Descarga de archivos de datos cifrados](t_unloading_encrypted_files.md)

El comando COPY reconoce automáticamente y carga los archivos cifrados con SSE-S3 y SSE-KMS. Puede cargar archivos cifrados con una clave raíz simétrica del lado del cliente especificando la opción ENCRYPTED y proporcionando el valor de clave. Para obtener más información, consulte [Carga de datos cifrados en Amazon S3](t_uploading-encrypted-data.md).

Para cargar archivos de datos cifrados del lado del cliente, proporcione el valor de clave raíz con el parámetro MASTER\$1SYMMETRIC\$1KEY e incluya la opción ENCRYPTED.

```
COPY customer FROM 's3://amzn-s3-demo-bucket/encrypted/customer' 
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
MASTER_SYMMETRIC_KEY '<root_key>' 
ENCRYPTED
DELIMITER '|';
```

Para cargar archivos de datos cifrados que están comprimidos en gzip, lzop o bzip2, incluya la opción GZIP, LZOP o BZIP2 junto con el valor de clave raíz y la opción ENCRYPTED.

```
COPY customer FROM 's3://amzn-s3-demo-bucket/encrypted/customer' 
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
MASTER_SYMMETRIC_KEY '<root_key>'
ENCRYPTED 
DELIMITER '|' 
GZIP;
```