Ejemplos de UNLOAD
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.
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)
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
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
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
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
En el siguiente ejemplo, se descarga la tabla VENUE y se escriben los datos en formato CSV utilizando el carácter de barra vertical (|) 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
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_pipe_:
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
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
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
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
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_serial_000.
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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 }}
]
}