

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

# Ejemplos de UNLOAD
<a name="r_UNLOAD_command_examples"></a>

Estos ejemplos demuestran varios parámetros del comando UNLOAD. En muchos de los ejemplos se utilizan los datos de muestra de TICKIT. Para obtener más información, consulte [Base de datos de muestra](c_sampledb.md).

**nota**  
Estos ejemplos contienen saltos de línea por motivos de legibilidad. No incluya saltos de líneas ni espacios en la cadena *credentials-args (credenciales-argumentos)*.

## Descargar VENUE en un archivo delimitado por la barra vertical (delimitador predeterminado)
<a name="unload-examples-venue"></a>

En el siguiente ejemplo, se descarga la tabla VENUE y se escriben los datos en `s3://amzn-s3-demo-bucket/unload/`: 

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/unload/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

Por defecto, UNLOAD escribe uno o más archivos por sector. Suponiendo que un clúster de dos nodos con dos sectores por nodo, el ejemplo anterior crea estos archivos en `amzn-s3-demo-bucket`:

```
unload/0000_part_00
unload/0001_part_00
unload/0002_part_00
unload/0003_part_00
```

Para diferenciar mejor los archivos de salida, puede incluir un prefijo en la ubicación. En el siguiente ejemplo, se descarga la tabla VENUE y se escriben los datos en `s3://amzn-s3-demo-bucket/unload/venue_pipe_`: 

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/unload/venue_pipe_'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

El resultado es estos cuatro archivos en la carpeta `unload`, suponiendo nuevamente que hay cuatro secciones.

```
venue_pipe_0000_part_00
venue_pipe_0001_part_00
venue_pipe_0002_part_00
venue_pipe_0003_part_00
```

## Descargar la tabla LINEITEM en archivos Parquet particionados
<a name="unload-examples-partitioned-parquet"></a>

En el siguiente ejemplo, se descarga la tabla LINEITEM en formato Parquet, particionada por la columna `l_shipdate`. 

```
unload ('select * from lineitem')
to 's3://amzn-s3-demo-bucket/lineitem/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
PARQUET
PARTITION BY (l_shipdate);
```

Suponiendo que hay cuatro sectores, los archivos Parquet resultantes se dividen dinámicamente en varias carpetas. 

```
s3://amzn-s3-demo-bucket/lineitem/l_shipdate=1992-01-02/0000_part_00.parquet
                                             0001_part_00.parquet
                                             0002_part_00.parquet
                                             0003_part_00.parquet
s3://amzn-s3-demo-bucket/lineitem/l_shipdate=1992-01-03/0000_part_00.parquet
                                             0001_part_00.parquet
                                             0002_part_00.parquet
                                             0003_part_00.parquet
s3://amzn-s3-demo-bucket/lineitem/l_shipdate=1992-01-04/0000_part_00.parquet
                                             0001_part_00.parquet
                                             0002_part_00.parquet
                                             0003_part_00.parquet
...
```

**nota**  
En algunos casos, el comando UNLOAD utiliza la opción INCLUDE como se muestra en la siguiente instrucción SQL.   

```
unload ('select * from lineitem')
to 's3://amzn-s3-demo-bucket/lineitem/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
PARQUET
PARTITION BY (l_shipdate) INCLUDE;
```
En estos casos, la columna `l_shipdate` también está en los datos de los archivos Parquet. De lo contrario, los datos de la columna `l_shipdate` no están en los archivos Parquet.

## Descargar la tabla VENUE en un archivo JSON
<a name="unload-examples-json"></a>

En el siguiente ejemplo, se descarga la tabla VENUE y se escriben los datos en formato JSON en `s3://amzn-s3-demo-bucket/unload/`.

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/unload/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
JSON;
```

A continuación, se incluyen ejemplos de filas de la tabla VENUE.

```
venueid | venuename                  | venuecity       | venuestate | venueseats
--------+----------------------------+-----------------+------------+-----------
      1 | Pinewood Racetrack         | Akron           | OH         | 0
      2 | Columbus "Crew" Stadium    | Columbus        | OH         | 0
      4 | Community, Ballpark, Arena | Kansas City     | KS         | 0
```

Después de descargar en JSON, el formato del archivo es similar al siguiente.

```
{"venueid":1,"venuename":"Pinewood Racetrack","venuecity":"Akron","venuestate":"OH","venueseats":0}
{"venueid":2,"venuename":"Columbus \"Crew\" Stadium ","venuecity":"Columbus","venuestate":"OH","venueseats":0}
{"venueid":4,"venuename":"Community, Ballpark, Arena","venuecity":"Kansas City","venuestate":"KS","venueseats":0}
```

## Descargar VENUE en un archivo CSV
<a name="unload-examples-csv"></a>

En el siguiente ejemplo, se descarga la tabla VENUE y se escriben los datos en formato CSV en `s3://amzn-s3-demo-bucket/unload/`.

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/unload/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
CSV;
```

Suponga que la tabla VENUE contiene las siguientes filas.

```
venueid | venuename                  | venuecity       | venuestate | venueseats
--------+----------------------------+-----------------+------------+-----------
      1 | Pinewood Racetrack         | Akron           | OH         | 0
      2 | Columbus "Crew" Stadium    | Columbus        | OH         | 0
      4 | Community, Ballpark, Arena | Kansas City     | KS         | 0
```

El archivo de descarga tiene un aspecto similar al siguiente.

```
1,Pinewood Racetrack,Akron,OH,0
2,"Columbus ""Crew"" Stadium",Columbus,OH,0
4,"Community, Ballpark, Arena",Kansas City,KS,0
```

## Descargar VENUE en un archivo CSV mediante un delimitador
<a name="unload-examples-csv-delimiter"></a>

En el siguiente ejemplo, se descarga la tabla VENUE y se escriben los datos en formato CSV utilizando el carácter de barra vertical (\$1) como delimitador. El archivo descargado se escribe en `s3://amzn-s3-demo-bucket/unload/`. La tabla VENUE de este ejemplo contiene el carácter de barra vertical en el valor de la primera fila (`Pinewood Race|track`). Esto se hace para mostrar que el valor del resultado está entre comillas dobles. Las comillas dobles utilizan la secuencia de escape con una comilla doble y todo el campo se encierra entre comillas dobles. 

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/unload/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
CSV DELIMITER AS '|';
```

Suponga que la tabla VENUE contiene las siguientes filas.

```
venueid | venuename                  | venuecity       | venuestate | venueseats
--------+----------------------------+-----------------+------------+-------------
      1 | Pinewood Race|track        | Akron           | OH         | 0
      2 | Columbus "Crew" Stadium    | Columbus        | OH         | 0
      4 | Community, Ballpark, Arena | Kansas City     | KS         | 0
```

El archivo de descarga tiene un aspecto similar al siguiente.

```
1|"Pinewood Race|track"|Akron|OH|0
2|"Columbus ""Crew"" Stadium"|Columbus|OH|0
4|Community, Ballpark, Arena|Kansas City|KS|0
```

## Descargar VENUE con un archivo de manifiesto
<a name="unload-examples-manifest"></a>

Para crear un archivo de manifiesto, incluya la opción MANIFEST. En el siguiente ejemplo, se descarga la tabla VENUE y se escriben un archivo de manifiesto junto con los archivos de datos en s3://amzn-s3-demo-bucket/venue\$1pipe\$1: 

**importante**  
Si descarga archivos con la opción MANIFEST, debe utilizar la opción MANIFEST con el comando COPY cuando carga los archivos. Si utiliza el mismo prefijo para cargar los archivos y no especifica la opción MANIFEST, COPY produce un error porque supone que el archivo de manifiesto es un archivo de datos.

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/venue_pipe_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
manifest;
```

El resultado es estos cinco archivos:

```
s3://amzn-s3-demo-bucket/venue_pipe_0000_part_00
s3://amzn-s3-demo-bucket/venue_pipe_0001_part_00
s3://amzn-s3-demo-bucket/venue_pipe_0002_part_00
s3://amzn-s3-demo-bucket/venue_pipe_0003_part_00
s3://amzn-s3-demo-bucket/venue_pipe_manifest
```

A continuación se muestra el contenido de un archivo de manifiesto. 

```
{
  "entries": [
    {"url":"s3://amzn-s3-demo-bucket/tickit/venue_0000_part_00"},
    {"url":"s3://amzn-s3-demo-bucket/tickit/venue_0001_part_00"},
    {"url":"s3://amzn-s3-demo-bucket/tickit/venue_0002_part_00"},
    {"url":"s3://amzn-s3-demo-bucket/tickit/venue_0003_part_00"}
  ]
}
```

## Descargar VENUE con MANIFEST VERBOSE
<a name="unload-examples-manifest-verbose"></a>

Cuando se especifica la opción MANIFEST VERBOSE, el archivo de manifiesto incluye las siguientes secciones: 
+ La sección `entries` enumera la ruta de Amazon S3, el tamaño del archivo y el recuento de filas de cada archivo. 
+ La sección `schema` enumera los nombres de columnas, los tipos de datos y la dimensión para cada columna. 
+ La sección `meta` muestra el tamaño del archivo total y el recuento de filas de todos los archivos. 

En el siguiente ejemplo, se descarga la tabla VENUE usando la opción MANIFEST VERBOSE. 

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/unload_venue_folder/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
manifest verbose;
```

A continuación se muestra el contenido de un archivo de manifiesto.

```
{
  "entries": [
    {"url":"s3://amzn-s3-demo-bucket/venue_pipe_0000_part_00", "meta": { "content_length": 32295, "record_count": 10 }},
    {"url":"s3://amzn-s3-demo-bucket/venue_pipe_0001_part_00", "meta": { "content_length": 32771, "record_count": 20 }},
    {"url":"s3://amzn-s3-demo-bucket/venue_pipe_0002_part_00", "meta": { "content_length": 32302, "record_count": 10 }},
    {"url":"s3://amzn-s3-demo-bucket/venue_pipe_0003_part_00", "meta": { "content_length": 31810, "record_count": 15 }}
  ],
  "schema": {
    "elements": [
      {"name": "venueid", "type": { "base": "integer" }},
      {"name": "venuename", "type": { "base": "character varying", 25 }},
      {"name": "venuecity", "type": { "base": "character varying", 25 }},
      {"name": "venuestate", "type": { "base": "character varying", 25 }},
      {"name": "venueseats", "type": { "base": "character varying", 25 }}
    ]
  },
  "meta": {
    "content_length": 129178,
    "record_count": 55
  },
  "author": {
    "name": "Amazon Redshift",
    "version": "1.0.0"
  }
}
```

## Descargar VENUE con un encabezado
<a name="unload-examples-header"></a>

En el siguiente ejemplo, se descarga VENUE con una fila de encabezado.

```
unload ('select * from venue where venueseats > 75000')
to 's3://amzn-s3-demo-bucket/unload/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
header
parallel off;
```

A continuación, se muestra el contenido del archivo de salida con una fila de encabezado.

```
venueid|venuename|venuecity|venuestate|venueseats
6|New York Giants Stadium|East Rutherford|NJ|80242
78|INVESCO Field|Denver|CO|76125
83|FedExField|Landover|MD|91704
79|Arrowhead Stadium|Kansas City|MO|79451
```

## Descargar VENUE en archivos más pequeños
<a name="unload-examples-maxfilesize"></a>

Por defecto, el tamaño máximo de archivo es de 6,2 GB. Si los datos de descarga superan 6.2 GB, UNLOAD crea un nuevo archivo para cada segmento de datos de 6,2 GB. Para crear archivos más pequeños, incluya el parámetro MAXFILESIZE. Suponiendo que el tamaño de los datos en el ejemplo anterior era de 20 GB, el siguiente comando UNLOAD crea 20 archivos, cada uno de 1 GB.

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/unload/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
maxfilesize 1 gb;
```

## Descargar VENUE en serie
<a name="unload-examples-serial"></a>

Para descargar en serie, especifique PARALLEL OFF. UNLOAD escribe un archivo a la vez, hasta un máximo de 6,2 GB por archivo. 

En el siguiente ejemplo, se descarga la tabla VENUE y se escriben los datos en serie en `s3://amzn-s3-demo-bucket/unload/`. 

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/unload/venue_serial_'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
parallel off;
```

El resultado es un archivo denominado venue\$1serial\$1000. 

Si los datos de descarga superan 6.2 GB, UNLOAD crea un nuevo archivo para cada segmento de datos de 6,2 GB. En el siguiente ejemplo, se descarga la tabla LINEORDER y se escriben los datos en serie en `s3://amzn-s3-demo-bucket/unload/`. 

```
unload ('select * from lineorder')
to 's3://amzn-s3-demo-bucket/unload/lineorder_serial_'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
parallel off gzip;
```

El resultado es la siguiente serie de archivos.

```
lineorder_serial_0000.gz
lineorder_serial_0001.gz
lineorder_serial_0002.gz
lineorder_serial_0003.gz
```

Para diferenciar mejor los archivos de salida, puede incluir un prefijo en la ubicación. En el siguiente ejemplo, se descarga la tabla VENUE y se escriben los datos en `s3://amzn-s3-demo-bucket/venue_pipe_`: 

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/unload/venue_pipe_'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

El resultado es estos cuatro archivos en la carpeta `unload`, suponiendo nuevamente que hay cuatro secciones.

```
venue_pipe_0000_part_00
venue_pipe_0001_part_00
venue_pipe_0002_part_00
venue_pipe_0003_part_00
```

## Cargar VENUE desde los archivos de descarga
<a name="unload-examples-load"></a>

Para cargar una tabla desde un conjunto de archivos de descarga, simplemente debe revertir el proceso al utilizar un comando COPY. En el siguiente ejemplo, se crea una nueva tabla, LOADVENUE, y se carga la tabla desde los archivos de datos creados en el ejemplo anterior.

```
create table loadvenue (like venue);

copy loadvenue from 's3://amzn-s3-demo-bucket/venue_pipe_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

Si utilizó la opción MANIFEST para crear un archivo de manifiesto con los archivos de descarga, puede cargar los datos a través del mismo archivo de manifiesto. Para ello, debe usar un comando COPY con la opción MANIFEST. En el siguiente ejemplo, se cargan datos a través de un archivo de manifiesto.

```
copy loadvenue
from 's3://amzn-s3-demo-bucket/venue_pipe_manifest' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
manifest;
```

## Descargar VENUE en archivos cifrados
<a name="unload-examples-unload-encrypted"></a>

En el siguiente ejemplo, se descarga la tabla VENUE en un conjunto de archivos cifrados mediante una clave de AWS KMS. Si especifica un archivo de manifiesto con la opción ENCRYPTED, también se cifra el archivo de manifiesto. Para obtener más información, consulte [Descarga de archivos de datos cifrados](t_unloading_encrypted_files.md).

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/venue_encrypt_kms'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
kms_key_id '1234abcd-12ab-34cd-56ef-1234567890ab'
manifest
encrypted;
```

En el siguiente ejemplo, se descarga la tabla VENUE en un conjunto de archivos cifrados a través de una clave raíz simétrica. 

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/venue_encrypt_cmk'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
master_symmetric_key 'EXAMPLEMASTERKEYtkbjk/OpCwtYSx/M4/t7DMCDIK722'
encrypted;
```

## Cargar VENUE desde archivos cifrados
<a name="unload-examples-load-encrypted"></a>

Para cargar tablas desde un conjunto de archivos que se crearon usando UNLOAD con la opción ENCRYPT, revierta el proceso utilizando un comando COPY. Con ese comando, use la opción ENCRYPTED y especifique la misma clave raíz simétrica que se utilizó para el comando UNLOAD. En el siguiente ejemplo, se carga la tabla LOADVENUE desde los archivos de datos cifrados creados en el ejemplo anterior.

```
create table loadvenue (like venue);

copy loadvenue
from 's3://amzn-s3-demo-bucket/venue_encrypt_manifest'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
master_symmetric_key 'EXAMPLEMASTERKEYtkbjk/OpCwtYSx/M4/t7DMCDIK722'
manifest
encrypted;
```

## Descargar datos de VENUE en un archivo delimitado por tabulaciones
<a name="unload-examples-venue-tab"></a>

```
unload ('select venueid, venuename, venueseats from venue')
to 's3://amzn-s3-demo-bucket/venue_tab_'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
delimiter as '\t';
```

Los archivos de datos de salida tendrán este aspecto: 

```
1	Toyota Park	Bridgeview	IL	0
2	Columbus Crew Stadium	Columbus	OH	0
3	RFK Stadium	Washington	DC	0
4	CommunityAmerica Ballpark	Kansas City	KS	0
5	Gillette Stadium	Foxborough	MA	68756
...
```

## Descargar VENUE en un archivo de datos de ancho fijo
<a name="unload-venue-fixed-width"></a>

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/venue_fw_'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
fixedwidth as 'venueid:3,venuename:39,venuecity:16,venuestate:2,venueseats:6';
```

Los archivos de datos de salida tendrán un aspecto similar al siguiente. 

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

## Descargar VENUE en un conjunto de archivos comprimidos GZIP delimitados por tabulaciones
<a name="unload-examples-venue-gzip"></a>

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/venue_tab_'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
delimiter as '\t'
gzip;
```

## Descargar VENUE en un archivo de texto comprimido con GZIP
<a name="unload-examples-venue-extension-gzip"></a>

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/venue_tab_'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
extension 'txt.gz'
gzip;
```

## Descargar datos que contienen un delimitador
<a name="unload-examples-delimiter"></a>

Este ejemplo usa la opción ADDQUOTES para descargar datos delimitados por comas donde algunos campos de datos contienen una coma.

Primero, cree una tabla que contenga comillas.

```
create table location (id int, location char(64));

insert into location values (1,'Phoenix, AZ'),(2,'San Diego, CA'),(3,'Chicago, IL');
```

Luego, descargue los datos con la opción ADDQUOTES.

```
unload ('select id, location from location')
to 's3://amzn-s3-demo-bucket/location_'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
delimiter ',' addquotes;
```

Los archivos de datos descargados tendrán este aspecto: 

```
1,"Phoenix, AZ"
2,"San Diego, CA"
3,"Chicago, IL"
...
```

## Descargar los resultados de una consulta de combinación
<a name="unload-examples-join"></a>

En el siguiente ejemplo, se descargan los resultados de una consulta de combinación que contiene una función de ventana. 

```
unload ('select venuecity, venuestate, caldate, pricepaid,
sum(pricepaid) over(partition by venuecity, venuestate
order by caldate rows between 3 preceding and 3 following) as winsum
from sales join date on sales.dateid=date.dateid
join event on event.eventid=sales.eventid
join venue on event.venueid=venue.venueid
order by 1,2')
to 's3://amzn-s3-demo-bucket/tickit/winsum'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

Los archivos de salida tendrán este aspecto: 

```
Atlanta|GA|2008-01-04|363.00|1362.00
Atlanta|GA|2008-01-05|233.00|2030.00
Atlanta|GA|2008-01-06|310.00|3135.00
Atlanta|GA|2008-01-08|166.00|8338.00
Atlanta|GA|2008-01-11|268.00|7630.00
...
```

## Descargar con NULL AS
<a name="unload-examples-null-as"></a>

Los valores nulos de resultado de UNLOAD son cadenas vacías por defecto. En los siguientes ejemplos se muestra cómo utilizar NULL AS para sustituir una cadena de texto para los valores nulos.

Para estos ejemplos, agregamos algunos valores nulos a la tabla VENUE.

```
update venue set venuestate = NULL
where venuecity = 'Cleveland';
```

Seleccione en VENUE donde VENUESTATE toma el valor nulo para verificar que las columnas contienen NULL.

```
select * from venue where venuestate is null;

 venueid |        venuename         | venuecity | venuestate | venueseats
---------+--------------------------+-----------+------------+------------
      22 | Quicken Loans Arena      | Cleveland |            |          0
     101 | Progressive Field        | Cleveland |            |      43345
      72 | Cleveland Browns Stadium | Cleveland |            |      73200
```

Ahora, aplique UNLOAD en la tabla VENUE con la opción NULL AS para reemplazar valores nulos con la cadena de caracteres "". '`fred`'. 

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/nulls/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
null as 'fred';
```

En el siguiente ejemplo del archivo de descarga se muestra que los valores nulos se reemplazaron con `fred`. Resulta que algunos valores para VENUESEATS también eran valores nulos y se reemplazaron con `fred`. Aunque el tipo de datos para VENUESEATS es entero, el comando UNLOAD convierte los valores a texto en los archivos de descarga y, luego, el comando COPY los convierte nuevamente a valores enteros. Si está descargando un archivo de ancho fijo, la cadena NULL AS no debe ser más grande que el ancho del campo.

```
248|Charles Playhouse|Boston|MA|0
251|Paris Hotel|Las Vegas|NV|fred
258|Tropicana Hotel|Las Vegas|NV|fred
300|Kennedy Center Opera House|Washington|DC|0
306|Lyric Opera House|Baltimore|MD|0
308|Metropolitan Opera|New York City|NY|0
  5|Gillette Stadium|Foxborough|MA|5
 22|Quicken Loans Arena|Cleveland|fred|0
101|Progressive Field|Cleveland|fred|43345
...
```

Para cargar una tabla desde los archivos de descarga, utilice un comando COPY con la misma opción NULL AS. 

**nota**  
Si intenta cargar valores nulos en una columna definida como NOT NULL, el comando COPY produce un error.

```
create table loadvenuenulls (like venue);

copy loadvenuenulls from 's3://amzn-s3-demo-bucket/nulls/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
null as 'fred';
```

Para verificar que las columnas contienen un valor nulo, no solo cadenas vacías, seleccione LOADVENUENULLS y filtre en busca de valores nulos.

```
select * from loadvenuenulls where venuestate is null or venueseats is null;

 venueid |        venuename         | venuecity | venuestate | venueseats
---------+--------------------------+-----------+------------+------------
      72 | Cleveland Browns Stadium | Cleveland |            |      73200
     253 | Mirage Hotel             | Las Vegas | NV         |
     255 | Venetian Hotel           | Las Vegas | NV         |
      22 | Quicken Loans Arena      | Cleveland |            |          0
     101 | Progressive Field        | Cleveland |            |      43345
     251 | Paris Hotel              | Las Vegas | NV         |

...
```

Puede utilizar UNLOAD en una tabla que contiene valores nulos con el comportamiento NULL AS predeterminado y, luego, aplicar COPY para copiar los datos nuevamente en una tabla a través del comportamiento NULL AS predeterminado. No obstante, los campos no numéricos en la tabla de destino tendrá cadenas vacías, no nulas. Por defecto, UNLOAD convierte valores nulos en cadenas vacías (espacio en blanco o longitud cero). COPY convierte cadenas vacías en valores NULL para columnas numéricas, pero inserta cadenas vacías en columnas no numéricas. En el siguiente ejemplo, se muestra cómo realizar un UNLOAD seguido de un comando COPY a través del comportamiento NULL AS predeterminado. 

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/nulls/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' allowoverwrite;

truncate loadvenuenulls;
copy loadvenuenulls from 's3://amzn-s3-demo-bucket/nulls/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

En este caso, cuando filtró en busca de valores nulos, solo las filas donde VENUESEATS contenía valores nulos. Donde VENUESTATE contenía valores nulos en la tabla (VENUE), VENUESTATE en la tabla de destino (LOADVENUENULLS) contenía cadenas vacías.

```
select * from loadvenuenulls where venuestate is null or venueseats is null;

 venueid |        venuename         | venuecity | venuestate | venueseats
---------+--------------------------+-----------+------------+------------
     253 | Mirage Hotel             | Las Vegas | NV         |
     255 | Venetian Hotel           | Las Vegas | NV         |
     251 | Paris Hotel              | Las Vegas | NV         |
...
```

Para cargar cadenas vacías en columnas no numéricas como NULL, incluya las opciones EMPTYASNULL o BLANKSASNULL. Se pueden utilizar ambas.

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/nulls/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' allowoverwrite;

truncate loadvenuenulls;
copy loadvenuenulls from 's3://amzn-s3-demo-bucket/nulls/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' EMPTYASNULL;
```

Para verificar que las columnas contienen un valor NULL, no solo espacios en blanco o cadenas vacías, seleccione LOADVENUENULLS y filtre el contenido en busca de valores nulos.

```
select * from loadvenuenulls where venuestate is null or venueseats is null;

 venueid |        venuename         | venuecity | venuestate | venueseats
---------+--------------------------+-----------+------------+------------
      72 | Cleveland Browns Stadium | Cleveland |            |      73200
     253 | Mirage Hotel             | Las Vegas | NV         |
     255 | Venetian Hotel           | Las Vegas | NV         |
      22 | Quicken Loans Arena      | Cleveland |            |          0
     101 | Progressive Field        | Cleveland |            |      43345
     251 | Paris Hotel              | Las Vegas | NV         |
     ...
```

## Descargar mediante el parámetro ALLOWOVERWRITE
<a name="unload-examples-allowoverwrite"></a>

De manera predeterminada, UNLOAD no sobrescribe los archivos existentes en el bucket de destino. Por ejemplo, si ejecuta la misma instrucción UNLOAD dos veces sin modificar los archivos en el bucket de destino, el segundo comando UNLOAD produce un error. Para sobrescribir los archivos existentes, incluido el archivo de manifiesto, especifique la opción ALLOWOVERWRITE.

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/venue_pipe_'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
manifest allowoverwrite;
```

## Descargar la tabla EVENT mediante los parámetros PARALLEL y MANIFEST
<a name="unload-examples-manifest-parallel"></a>

Puede usar UNLOAD para descargar una tabla en paralelo y generar un archivo de manifiesto. Los archivos de datos de Amazon S3 se crean todos al mismo nivel y los nombres tienen como sufijo el patrón `0000_part_00`. El archivo de manifiesto se encuentra en el mismo nivel de carpeta que los archivos de datos y tiene como sufijo el texto `manifest`. El siguiente código SQL descarga la tabla EVENT y crea archivos con el nombre base `parallel`

```
unload ('select * from mytickit1.event')
to 's3://amzn-s3-demo-bucket/parallel'
iam_role 'arn:aws:iam::123456789012:role/MyRedshiftRole'
parallel on
manifest;
```

La lista de archivos de Amazon S3 es similar a la siguiente.

```
 Name                       Last modified                        Size                  
 parallel0000_part_00	-   August 2, 2023, 14:54:39 (UTC-07:00) 52.1 KB  
 parallel0001_part_00	-   August 2, 2023, 14:54:39 (UTC-07:00) 53.4 KB
 parallel0002_part_00	-   August 2, 2023, 14:54:39 (UTC-07:00) 52.1 KB
 parallel0003_part_00	-   August 2, 2023, 14:54:39 (UTC-07:00) 51.1 KB
 parallel0004_part_00	-   August 2, 2023, 14:54:39 (UTC-07:00) 54.6 KB
 parallel0005_part_00	-   August 2, 2023, 14:54:39 (UTC-07:00) 53.4 KB
 parallel0006_part_00	-   August 2, 2023, 14:54:39 (UTC-07:00) 54.1 KB
 parallel0007_part_00	-   August 2, 2023, 14:54:39 (UTC-07:00) 55.9 KB
 parallelmanifest       -   August 2, 2023, 14:54:39 (UTC-07:00) 886.0 B
```

El contenido del archivo `parallelmanifest` es similar al siguiente.

```
{
  "entries": [
    {"url":"s3://amzn-s3-demo-bucket/parallel0000_part_00", "meta": { "content_length": 53316 }},
    {"url":"s3://amzn-s3-demo-bucket/parallel0001_part_00", "meta": { "content_length": 54704 }},
    {"url":"s3://amzn-s3-demo-bucket/parallel0002_part_00", "meta": { "content_length": 53326 }},
    {"url":"s3://amzn-s3-demo-bucket/parallel0003_part_00", "meta": { "content_length": 52356 }},
    {"url":"s3://amzn-s3-demo-bucket/parallel0004_part_00", "meta": { "content_length": 55933 }},
    {"url":"s3://amzn-s3-demo-bucket/parallel0005_part_00", "meta": { "content_length": 54648 }},
    {"url":"s3://amzn-s3-demo-bucket/parallel0006_part_00", "meta": { "content_length": 55436 }},
    {"url":"s3://amzn-s3-demo-bucket/parallel0007_part_00", "meta": { "content_length": 57272 }}
  ]
}
```

## Descargar la tabla EVENT mediante los parámetros PARALLEL OFF y MANIFEST
<a name="unload-examples-manifest-serial"></a>

Puede usar UNLOAD para descargar una tabla en serie (PARALLEL OFF) y generar un archivo de manifiesto. Los archivos de datos de Amazon S3 se crean todos al mismo nivel y los nombres tienen como sufijo el patrón `0000`. El archivo de manifiesto se encuentra en el mismo nivel de carpeta que los archivos de datos y tiene como sufijo el texto `manifest`.

```
unload ('select * from mytickit1.event')
to 's3://amzn-s3-demo-bucket/serial'
iam_role 'arn:aws:iam::123456789012:role/MyRedshiftRole'
parallel off
manifest;
```

La lista de archivos de Amazon S3 es similar a la siguiente.

```
 Name                       Last modified                        Size                  
 serial0000             -   August 2, 2023, 15:54:39 (UTC-07:00) 426.7 KB  
 serialmanifest         -   August 2, 2023, 15:54:39 (UTC-07:00) 120.0 B
```

El contenido del archivo `serialmanifest` es similar al siguiente.

```
{
  "entries": [
    {"url":"s3://amzn-s3-demo-bucket/serial000", "meta": { "content_length": 436991 }}
  ]
}
```

## Descargar la tabla EVENT mediante los parámetros PARTITION BY y MANIFEST
<a name="unload-examples-manifest-partition"></a>

Puede usar UNLOAD para descargar una tabla por partición y generar un archivo de manifiesto. Se crea una nueva carpeta en Amazon S3 con carpetas de partición secundarias y los archivos de datos en las carpetas secundarias con un patrón de nombres similar a `0000_par_00`. El archivo de manifiesto se encuentra en el mismo nivel de carpeta que las carpetas secundarias con el nombre `manifest`.

```
unload ('select * from mytickit1.event')
to 's3://amzn-s3-demo-bucket/partition'
iam_role 'arn:aws:iam::123456789012:role/MyRedshiftRole'
partition by (eventname)
manifest;
```

La lista de archivos de Amazon S3 es similar a la siguiente.

```
 Name                   Type     Last modified                        Size                  
 partition           	Folder
```

En la carpeta `partition` están las carpetas secundarias con el nombre de la partición y el archivo de manifiesto. A continuación, se muestra la parte final de la lista de carpetas de la carpeta `partition`, similar a la siguiente.

```
 Name                   Type      Last modified                        Size                  
 ...
 eventname=Zucchero/    Folder 
 eventname=Zumanity/    Folder 
 eventname=ZZ Top/      Folder  
 manifest          	    -	    August 2, 2023, 15:54:39 (UTC-07:00) 467.6 KB
```

En la carpeta `eventname=Zucchero/` están los archivos de datos similares a los siguientes.

```
 Name               Last modified                        Size                  
 0000_part_00	-   August 2, 2023, 15:59:19 (UTC-07:00) 70.0 B
 0001_part_00	-   August 2, 2023, 15:59:16 (UTC-07:00) 106.0 B
 0002_part_00	-   August 2, 2023, 15:59:15 (UTC-07:00) 70.0 B
 0004_part_00	-   August 2, 2023, 15:59:17 (UTC-07:00) 141.0 B
 0006_part_00	-   August 2, 2023, 15:59:16 (UTC-07:00) 35.0 B
 0007_part_00	-   August 2, 2023, 15:59:19 (UTC-07:00) 108.0 B
```

La parte final del contenido del archivo `manifest` es similar a la siguiente.

```
{
  "entries": [
    ...
    {"url":"s3://amzn-s3-demo-bucket/partition/eventname=Zucchero/007_part_00", "meta": { "content_length": 108 }},
    {"url":"s3://amzn-s3-demo-bucket/partition/eventname=Zumanity/007_part_00", "meta": { "content_length": 72 }}
  ]
}
```

## Descargar la tabla EVENT con los parámetros MAXFILESIZE, ROWGROUPSIZE y MANIFEST
<a name="unload-examples-manifest-maxsize"></a>

Puede usar UNLOAD para descargar una tabla en paralelo y generar un archivo de manifiesto. Los archivos de datos de Amazon S3 se crean todos al mismo nivel y los nombres tienen como sufijo el patrón `0000_part_00`. Los archivos de datos Parquet generados están limitados a 256 MB y el tamaño del grupo de filas a 128 MB. El archivo de manifiesto se encuentra en el mismo nivel de carpeta que los archivos de datos y tiene como sufijo `manifest`.

```
unload ('select * from mytickit1.event')
to 's3://amzn-s3-demo-bucket/eventsize'
iam_role 'arn:aws:iam::123456789012:role/MyRedshiftRole'
maxfilesize 256 MB
rowgroupsize 128 MB
parallel on
parquet
manifest;
```

La lista de archivos de Amazon S3 es similar a la siguiente.

```
 Name                            Type      Last modified                        Size 
 eventsize0000_part_00.parquet	parquet	August 2, 2023, 17:35:21 (UTC-07:00) 24.5 KB
 eventsize0001_part_00.parquet	parquet	August 2, 2023, 17:35:21 (UTC-07:00) 24.8 KB
 eventsize0002_part_00.parquet	parquet	August 2, 2023, 17:35:21 (UTC-07:00) 24.4 KB
 eventsize0003_part_00.parquet	parquet	August 2, 2023, 17:35:21 (UTC-07:00) 24.0 KB
 eventsize0004_part_00.parquet	parquet	August 2, 2023, 17:35:21 (UTC-07:00) 25.3 KB
 eventsize0005_part_00.parquet	parquet	August 2, 2023, 17:35:21 (UTC-07:00) 24.8 KB
 eventsize0006_part_00.parquet	parquet	August 2, 2023, 17:35:21 (UTC-07:00) 25.0 KB
 eventsize0007_part_00.parquet	parquet	August 2, 2023, 17:35:21 (UTC-07:00) 25.6 KB
 eventsizemanifest                 -       August 2, 2023, 17:35:21 (UTC-07:00) 958.0 B
```

El contenido del archivo `eventsizemanifest` es similar al siguiente.

```
{
  "entries": [
    {"url":"s3://amzn-s3-demo-bucket/eventsize0000_part_00.parquet", "meta": { "content_length": 25130 }},
    {"url":"s3://amzn-s3-demo-bucket/eventsize0001_part_00.parquet", "meta": { "content_length": 25428 }},
    {"url":"s3://amzn-s3-demo-bucket/eventsize0002_part_00.parquet", "meta": { "content_length": 25025 }},
    {"url":"s3://amzn-s3-demo-bucket/eventsize0003_part_00.parquet", "meta": { "content_length": 24554 }},
    {"url":"s3://amzn-s3-demo-bucket/eventsize0004_part_00.parquet", "meta": { "content_length": 25918 }},
    {"url":"s3://amzn-s3-demo-bucket/eventsize0005_part_00.parquet", "meta": { "content_length": 25362 }},
    {"url":"s3://amzn-s3-demo-bucket/eventsize0006_part_00.parquet", "meta": { "content_length": 25647 }},
    {"url":"s3://amzn-s3-demo-bucket/eventsize0007_part_00.parquet", "meta": { "content_length": 26256 }}
  ]
}
```