Exemplos de UNLOAD - Amazon Redshift

Exemplos de UNLOAD

Esses exemplos demonstram vários parâmetros do comando UNLOAD. Os dados de amostra de TICKIT são usados em muitos dos exemplos. Para ter mais informações, consulte Banco de dados de exemplo.

nota

Estes exemplos contêm quebras de linha para garantir legibilidade. Não inclua quebras de linha nem espaços na string credentials-args.

Descarregar VENUE para um arquivo delimitado por barras (delimitador padrão)

O exemplo a seguir descarrega a tabela VENUE e grava os dados em s3://mybucket/unload/:

unload ('select * from venue') to 's3://mybucket/unload/' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Por padrão, UNLOAD grava um ou mais arquivos por fatia. Pressupondo um cluster de dois nós com duas fatias por nó, o exemplo anterior cria estes arquivos em mybucket:

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

Para melhor diferenciar os arquivos de saída, você pode incluir um prefixo no local. O exemplo a seguir descarrega a tabela VENUE e grava os dados em s3://mybucket/unload/venue_pipe_:

unload ('select * from venue') to 's3://mybucket/unload/venue_pipe_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Como resultado, temos os quatro arquivos na pasta unload, mais uma vez pressupondo quatro fatias.

venue_pipe_0000_part_00 venue_pipe_0001_part_00 venue_pipe_0002_part_00 venue_pipe_0003_part_00

Descarregar tabela LINEITEM para arquivos Parquet particionados

O exemplo a seguir descarrega a tabela LINEITEM no formato Parquet, particionada pela coluna l_shipdate.

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

Assumindo que há quatro fatias, os arquivos Parquet resultantes são particionados dinamicamente em várias pastas.

s3://mybucket/lineitem/l_shipdate=1992-01-02/0000_part_00.parquet 0001_part_00.parquet 0002_part_00.parquet 0003_part_00.parquet s3://mybucket/lineitem/l_shipdate=1992-01-03/0000_part_00.parquet 0001_part_00.parquet 0002_part_00.parquet 0003_part_00.parquet s3://mybucket/lineitem/l_shipdate=1992-01-04/0000_part_00.parquet 0001_part_00.parquet 0002_part_00.parquet 0003_part_00.parquet ...
nota

Em alguns casos, o comando UNLOAD usou a opção INCLUDE, conforme mostrado na instrução SQL a seguir.

unload ('select * from lineitem') to 's3://mybucket/lineitem/' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' PARQUET PARTITION BY (l_shipdate) INCLUDE;

Nesses casos, a coluna l_shipdate também está nos dados nos arquivos Parquet. Caso contrário, os dados da coluna l_shipdate não estão nos arquivos Parquet.

Descarregue a tabela VENUE para um arquivo JSON

O exemplo a seguir descarrega a tabela VENUE e grava os dados no formato JSON em s3://mybucket/unload/.

unload ('select * from venue') to 's3://mybucket/unload/' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' JSON;

As linhas de exemplo são exemplos da tabela 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

Após o descarregamento para JSON, o formato do arquivo é semelhante ao seguinte.

{"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}

Descarregar VENUE para um arquivo CSV

O exemplo a seguir descarrega a tabela VENUE e grava os dados no formato CSV em s3://mybucket/unload/.

unload ('select * from venue') to 's3://mybucket/unload/' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' CSV;

Suponha que a tabela VENUE contenha as linhas a seguir.

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

O arquivo de descarregamento é semelhante ao seguinte.

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

Descarregar VENUE para um arquivo CSV usando um delimitador

O exemplo a seguir descarrega a tabela VENUE e grava os dados no formato CSV usando o caractere de barra vertical (|) como delimitador. O arquivo descarregado é gravado em s3://mybucket/unload/. Neste exemplo, a tabela VENUE contém o caractere de barra vertical no valor da primeira linha (Pinewood Race|track). Isso é feito para mostrar que o valor no resultado está entre aspas duplas. Aspas duplas são recuadas por aspas duplas e todo o campo é colocado entre aspas duplas.

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

Suponha que a tabela VENUE contenha as linhas a seguir.

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

O arquivo de descarregamento é semelhante ao seguinte.

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

Descarregar VENUE com um arquivo manifesto

Para criar um arquivo manifesto, inclua a opção MANIFEST. O exemplo a seguir descarrega a tabela VENUE e grava um arquivo manifesto com arquivos de dados em s3: : //mybucket/venue_pipe_:

Importante

Ao descarregar arquivos com a opção MANIFEST, você deve usar a opção MANIFEST com o comando COPY para carregar os arquivos. Se você usar o mesmo prefixo para carregar os arquivos e não especificar a opção MANIFEST, ocorrerá uma falha na opção COPY porque ela pressupõe que o arquivo de manifesto é um arquivo de dados.

unload ('select * from venue') to 's3://mybucket/venue_pipe_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' manifest;

O resultado são estes cinco arquivos:

s3://mybucket/venue_pipe_0000_part_00 s3://mybucket/venue_pipe_0001_part_00 s3://mybucket/venue_pipe_0002_part_00 s3://mybucket/venue_pipe_0003_part_00 s3://mybucket/venue_pipe_manifest

A seguir, você verá o conteúdo do arquivo manifesto.

{ "entries": [ {"url":"s3://mybucket/tickit/venue_0000_part_00"}, {"url":"s3://mybucket/tickit/venue_0001_part_00"}, {"url":"s3://mybucket/tickit/venue_0002_part_00"}, {"url":"s3://mybucket/tickit/venue_0003_part_00"} ] }

Descarregar VENUE com MANIFEST VERBOSE

Quando você especifica a opção MANIFEST VERBOSE, o arquivo manifesto inclui as seguintes seções:

  • A seção entries lista o caminho, o tamanho e a contagem de linhas do Amazon S3 para cada arquivo.

  • A seção schema lista os nomes das colunas, os tipos de dados e a dimensão de cada coluna.

  • A seção meta mostra o tamanho total do arquivo e a contagem de linhas para todos os arquivos.

O exemplo a seguir descarrega a tabela VENUE usando a opção MANIFEST VERBOSE.

unload ('select * from venue') to 's3://mybucket/unload_venue_folder/' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' manifest verbose;

A seguir, você verá o conteúdo do arquivo manifesto.

{ "entries": [ {"url":"s3://mybucket/venue_pipe_0000_part_00", "meta": { "content_length": 32295, "record_count": 10 }}, {"url":"s3://mybucket/venue_pipe_0001_part_00", "meta": { "content_length": 32771, "record_count": 20 }}, {"url":"s3://mybucket/venue_pipe_0002_part_00", "meta": { "content_length": 32302, "record_count": 10 }}, {"url":"s3://mybucket/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" } }

Descarregar VENUE com um cabeçalho

O exemplo a seguir descarrega VENUE com uma linha de cabeçalho.

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

O seguinte mostra o conteúdo do arquivo de saída com uma linha de cabeçalho.

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

Descarregar VENUE em arquivos menores

Por padrão, o tamanho máximo de arquivo é 6,2 GB. Se os dados do descarregamento forem maiores de 6,2 GB, UNLOAD criará um novo arquivo para cada segmento de dados de 6,2 GB. Para criar arquivos menores, inclua o parâmetro MAXFILESIZE. Pressupondo que o tamanho dos dados no exemplo anterior foi 20 GB, o seguinte comando UNLOAD cria 20 arquivos, cada um com 1 GB.

unload ('select * from venue') to 's3://mybucket/unload/' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' maxfilesize 1 gb;

Descarregar VENUE em série

Para descarregar em série, especifique PARALLEL OFF. UNLOAD gravará um arquivo por vez, com no máximo 6,2 GB por arquivo.

O exemplo a seguir descarrega a tabela VENUE e grava os dados em série em s3://mybucket/unload/.

unload ('select * from venue') to 's3://mybucket/unload/venue_serial_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' parallel off;

O resultado é um arquivo chamado venue_serial_000.

Se os dados do descarregamento forem maiores de 6,2 GB, UNLOAD criará um novo arquivo para cada segmento de dados de 6,2 GB. O exemplo a seguir descarrega a tabela LINEORDER e grava os dados em série em s3://mybucket/unload/.

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

O resultado é a seguinte série de arquivos.

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

Para melhor diferenciar os arquivos de saída, você pode incluir um prefixo no local. O exemplo a seguir descarrega a tabela VENUE e grava os dados em s3://mybucket/venue_pipe_:

unload ('select * from venue') to 's3://mybucket/unload/venue_pipe_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Como resultado, temos os quatro arquivos na pasta unload, mais uma vez pressupondo quatro fatias.

venue_pipe_0000_part_00 venue_pipe_0001_part_00 venue_pipe_0002_part_00 venue_pipe_0003_part_00

Carregar VENUE dos arquivos de descarregamento

Para carregar uma tabela de um conjunto de arquivos de descarga, simplesmente inverta o processo usando um comando COPY. O exemplo a seguir cria uma nova tabela, LOADVENUE, e carrega a tabela dos arquivos de dados criados no exemplo anterior.

create table loadvenue (like venue); copy loadvenue from 's3://mybucket/venue_pipe_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Se tiver usado a opção MANIFEST para criar um arquivo manifesto com seus arquivos de descarga, você poderá carregar os dados usando o mesmo arquivo manifesto. Você faz isso com um comando COPY com a opção MANIFEST. O exemplo a seguir carrega dados usando um arquivo manifesto.

copy loadvenue from 's3://mybucket/venue_pipe_manifest' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' manifest;

Descarregar VENUE em arquivos criptografados

O exemplo a seguir descarrega a tabela VENUE para um conjunto de arquivos criptografados usando uma chave do AWS KMS. Se você especificar um arquivo manifesto com a opção ENCRYPTED, o arquivo manifesto também será criptografado. Para obter mais informações, consulte Descarregamento de arquivos de dados criptografados.

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

O exemplo a seguir descarrega a tabela VENUE para um conjunto de arquivos criptografados usando uma chave simétrica raiz.

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

Carregar VENUE dos arquivos criptografados

Para carregar tabelas de um conjunto de arquivos que foram criados usando UNLOAD com a opção ENCRYPT, inverta o processo usando um comando COPY. Com esse comando, use a opção ENCRYPTED e especifique a mesma chave simétrica raiz que foi usada no comando UNLOAD. O exemplo a seguir carrega a tabela LOADVENUE a partir dos arquivos de dados criptografados criados no exemplo anterior.

create table loadvenue (like venue); copy loadvenue from 's3://mybucket/venue_encrypt_manifest' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' master_symmetric_key 'EXAMPLEMASTERKEYtkbjk/OpCwtYSx/M4/t7DMCDIK722' manifest encrypted;

Descarregar dados de VENUE para um arquivo delimitado por tabulação

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

Os arquivos de dados de saída são semelhantes a:

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

Descarregar VENUE para um arquivo de dados de largura fixa

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

Os arquivos de dados de saída serão semelhantes a:

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

Descarregar VENUE para um conjunto de arquivos GZIP compactados delimitados por tabulação

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

Descarregue VENUE em um arquivo de texto compactado com GZIP

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

Descarregar dados que contêm um delimitador

Este exemplo usa a opção ADDQUOTES para descarregar dados delimitados por vírgula onde alguns dos campos de dados reais contêm uma vírgula.

Primeiramente, crie uma tabela que contenha aspas.

create table location (id int, location char(64)); insert into location values (1,'Phoenix, AZ'),(2,'San Diego, CA'),(3,'Chicago, IL');

Em seguida, descarregue os dados usando a opção ADDQUOTES.

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

Os arquivos de dados descarregados são semelhantes a:

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

Descarregar os resultados de uma consulta de junção

O exemplo a seguir descarrega os resultados de uma consulta de junção que contém uma função de janela.

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://mybucket/tickit/winsum' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Os arquivos de saída são semelhantes a:

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

Descarregar usando NULL AS

UNLOAD apresenta valores nulos de saída como strings vazias por padrão. Os exemplos a seguir mostram como usar NULL AS para substituir valores nulos por uma string de texto.

Para esses exemplos, vamos adicionar alguns valores nulos à tabela VENUE.

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

Selecione de VENUE onde VENUESTATE for nulo para confirmar que as colunas contêm valores 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

Agora, use UNLOAD para descarregar a tabela VENUE usando a opção NULL AS para substituir valores nulos pela string de caractere 'fred'.

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

O exemplo a seguir do arquivo de descarregamento mostra que os valores nulos foram substituídos por fred. Na realidade, os valores para VENUESEATS também eram nulos e foram substituídos por fred. Apesar de o tipo de dados para VENUESEATS ser 'inteiro', a opção UNLOAD converte os valores em texto nos arquivos do descarregamento, e a opção COPY os converte de volta em inteiro. Se você está descarregando para um arquivo de largura fixa, a string NULL AS não deve ser superior à largura do 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 carregar uma tabela de arquivos de descarregamento, use um comando COPY com a mesma opção NULL AS.

nota

Se você tentar carregar nulos em uma coluna definida como NOT NULL, o comando COPY falhará.

create table loadvenuenulls (like venue); copy loadvenuenulls from 's3://mybucket/nulls/' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' null as 'fred';

Para confirmar que as colunas contêm nulos, e não apenas strings vazias, selecione a opção LOADVENUENULLS e filtre por 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 | ...

Você pode usar a opção UNLOAD em uma tabela que contenha nulos usando o comportamento padrão NULL AS e depois COPY para copiar os dados de volta para uma tabela usando o comportamento NULL AS. No entanto, todos os campos não numéricos na tabela de destino contêm strings vazias, não nulas. Por padrão, UNLOAD converte nulos em strings vazias (espaços em branco ou de tamanho zero). Uma opção COPY converte strings vazias em NULL para colunas numéricas, mas insere strings vazias em colunas não numéricas. O exemplo a seguir mostra como executar a opção UNLOAD seguida por uma opção COPY usando o comportamento padrão NULL AS.

unload ('select * from venue') to 's3://mybucket/nulls/' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' allowoverwrite; truncate loadvenuenulls; copy loadvenuenulls from 's3://mybucket/nulls/' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Nesse caso, quando você filtra por nulos, somente as linhas em que VENUESEATS continha nulos. Nas linhas em que VENUESTATE continha nulos na tabela (VENUE), VENUESTATE contém strings vazias na tabela de destino (LOADVENUENULLS).

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 carregar strings vazias em colunas não numéricas como NULL, inclua a opção EMPTYASNULL ou BLANKSASNULL. É possível usar ambas.

unload ('select * from venue') to 's3://mybucket/nulls/' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' allowoverwrite; truncate loadvenuenulls; copy loadvenuenulls from 's3://mybucket/nulls/' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' EMPTYASNULL;

Para confirmar que as colunas contêm NULL, e não apenas os espaços em branco ou vazios, selecione a opção LOADVENUENULLS e filtre por 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 | ...

Descarregar usando o parâmetro ALLOWOVERWRITE

Por padrão, UNLOAD não substitui arquivos existentes no bucket de destino. Por exemplo, se você executar a mesma instrução UNLOAD duas vezes sem modificar os arquivos no bucket de destino, a segunda ocorrência de UNLOAD falha. Para substituir arquivos existentes, incluindo o arquivo manifesto, especifique a opção ALLOWOVERWRITE.

unload ('select * from venue') to 's3://mybucket/venue_pipe_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' manifest allowoverwrite;

Descarregue a tabela EVENT usando os parâmetros PARALLEL e MANIFEST

Você pode usar o parâmetro UNLOAD em uma tabela em paralelo e gerar um arquivo de manifesto. Os arquivos de dados do Amazon S3 são todos criados no mesmo nível e os nomes têm como sufixo o padrão 0000_part_00. O arquivo de manifesto está no mesmo nível de pasta dos arquivos de dados e tem como sufixo o texto manifest. O SQL a seguir descarrega a tabela EVENT e cria arquivos com o nome base parallel

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

A lista de arquivos do Amazon S3 é semelhante à seguinte:

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

O conteúdo do arquivo parallelmanifest é semelhante ao seguinte:

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

Descarregue a tabela EVENT usando os parâmetros PARALLEL OFF e MANIFEST

Você pode usar o parâmetro UNLOAD em uma tabela em série (PARALLEL OFF) e gerar um arquivo de manifesto. Os arquivos de dados do Amazon S3 são todos criados no mesmo nível e os nomes têm como sufixo o padrão 0000. O arquivo de manifesto está no mesmo nível de pasta dos arquivos de dados e tem como sufixo o texto manifest.

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

A lista de arquivos do Amazon S3 é semelhante à seguinte:

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

O conteúdo do arquivo serialmanifest é semelhante ao seguinte:

{ "entries": [ {"url":"s3://my-s3-bucket-name/serial000", "meta": { "content_length": 436991 }} ] }

Descarregue a tabela EVENT usando os parâmetros PARTITION BY e MANIFEST

Você pode usar o parâmetro UNLOAD em uma tabela por partição e gerar um arquivo de manifesto. Uma nova pasta é criada no Amazon S3 com pastas de partição secundárias e os arquivos de dados nas pastas secundárias com um padrão de nome semelhante a 0000_par_00. O arquivo de manifesto está no mesmo nível de pasta que as pastas secundárias com o nome manifest.

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

A lista de arquivos do Amazon S3 é semelhante à seguinte:

Name Type Last modified Size partition Folder

Na pasta partition encontram-se pastas secundárias com o nome da partição e o arquivo de manifesto. Veja a seguir a parte inferior da lista de pastas na pasta partition, semelhante à seguinte:

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

Na pasta eventname=Zucchero/ estão os arquivos de dados semelhantes aos seguintes:

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

A parte inferior do conteúdo do arquivo manifest é semelhante ao seguinte:

{ "entries": [ ... {"url":"s3://my-s3-bucket-name/partition/eventname=Zucchero/0007_part_00", "meta": { "content_length": 108 }}, {"url":"s3://my-s3-bucket-name/partition/eventname=Zumanity/0007_part_00", "meta": { "content_length": 72 }} ] }

Descarregue a tabela EVENT usando os parâmetros MAXFILESIZE, ROWGROUPSIZE e MANIFEST

Você pode usar o parâmetro UNLOAD em uma tabela em paralelo e gerar um arquivo de manifesto. Os arquivos de dados do Amazon S3 são todos criados no mesmo nível e os nomes têm como sufixo o padrão 0000_part_00. Os arquivos de dados do Parquet gerados são limitados a 256 MB e o tamanho do grupo de linhas a 128 MB. O arquivo de manifesto está no mesmo nível de pasta dos arquivos de dados e tem como sufixo manifest.

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

A lista de arquivos do Amazon S3 é semelhante à seguinte:

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

O conteúdo do arquivo eventsizemanifest é semelhante ao seguinte:

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