UNLOAD - Amazon Redshift

UNLOAD

Descarrega o resultado de uma consulta em um ou mais arquivos de texto JSON ou Apache Parquet no Amazon S3, usando a criptografia no servidor Amazon S3 (SSE-S3). Você também pode especificar a criptografia no lado do servidor com uma chave do AWS Key Management Service (SSE-KMS) ou a criptografia do lado do cliente com uma chave gerenciada pelo cliente.

Por padrão, o formato do arquivo descarregado é texto delimitado por barra vertical (|).

Você pode gerenciar o tamanho de arquivos no Amazon S3, e, por extensão, o número de arquivos, configurando o parâmetro MAXFILESIZE. Certifique-se de que os intervalos de IP do S3 sejam adicionados à sua lista de permissões. Para saber mais sobre os intervalos de IP do S3 necessários, consulte Isolamento de rede.

Você pode descarregar o resultado de uma consulta do Amazon Redshift no data lake do Amazon S3 no Apache Parquet, um formato de armazenamento colunar aberto e eficiente para análise. O formato Parquet é até duas vezes mais rápido de descarregar e consome até seis vezes menos armazenamento no Amazon S3 em comparação com os formatos de texto. Isso permite que você salve a transformação e o enriquecimento de dados que você fez no Amazon S3 no data lake do Amazon S3 em um formato aberto. Depois, você pode analisar seus dados com o Redshift Spectrum e outros serviços da AWS, como Amazon Athena, Amazon EMR e Amazon SageMaker.

Para obter mais informações e exemplos de cenários sobre o uso do comando UNLOAD, consulte Descarregamento de dados.

Permissões e privilégios necessários

Para que o comando UNLOAD seja bem-sucedido, é necessário pelo menos o privilégio SELECT nos dados no banco de dados, com a permissão para gravar no local do Amazon S3. As permissões necessárias são semelhantes ao comando COPY. Para obter mais informações sobre as permissões do comando COPY, consulte Permissões para acessar outros recursos da AWS.

Sintaxe

UNLOAD ('select-statement') TO 's3://object-path/name-prefix' authorization [ option, ...] where authorization is IAM_ROLE { default | 'arn:aws:iam::<Conta da AWS-id-1>:role/<role-name>[,arn:aws:iam::<Conta da AWS-id-2>:role/<role-name>][,...]' } where option is | [ FORMAT [ AS ] ] CSV | PARQUET | JSON | PARTITION BY ( column_name [, ... ] ) [ INCLUDE ] | MANIFEST [ VERBOSE ] | HEADER | DELIMITER [ AS ] 'delimiter-char' | FIXEDWIDTH [ AS ] 'fixedwidth-spec' | ENCRYPTED [ AUTO ] | BZIP2 | GZIP | ZSTD | ADDQUOTES | NULL [ AS ] 'null-string' | ESCAPE | ALLOWOVERWRITE | CLEANPATH | PARALLEL [ { ON | TRUE } | { OFF | FALSE } ] | MAXFILESIZE [AS] max-size [ MB | GB ] | ROWGROUPSIZE [AS] size [ MB | GB ] | REGION [AS] 'aws-region' } | EXTENSION 'extension-name'

Parâmetros

('select-instrução')

Uma consulta SELECT. Os resultados da consulta são descarregados. Na maioria dos casos, vale descarregar dados em ordem de classificação especificando uma cláusula ORDER BY na consulta. Essa abordagem economiza tempo necessário para classificar os dados ao carregar novamente.

A consulta deve estar entre aspas simples como mostrado a seguir:

('select * from venue order by venueid')
nota

Se sua consulta contiver aspas (por exemplo, para incluir valores literais), coloque o literal entre dois conjuntos de aspas simples — você também deve colocar a consulta entre aspas simples:

('select * from venue where venuestate=''NV''')
TO 's3://object-path/name-prefix'

Caminho completo, incluindo o nome do bucket, para o local no Amazon S3 onde o Amazon Redshift gravará os objetos do arquivo de saída, incluindo o arquivo manifesto se MANIFEST estiver especificado. Os nomes de objetos devem ter o prefixo nome-prefixo. Se você usar PARTITION BY, uma barra (/) será automaticamente adicionada ao final do valor name-prefix, se necessário. Para maior segurança, UNLOAD se conecta ao Amazon S3 usando uma conexão HTTPS. Por padrão, UNLOAD grava um ou mais arquivos por fatia. UNLOAD adiciona um número de fatia e um número de peça para o prefixo especificado da seguinte forma:

<object-path>/<name-prefix><slice-number>_part_<part-number>.

Se MANIFEST for especificado, o arquivo manifesto será redigido conforme o seguinte:

<object_path>/<name_prefix>manifest.

Se PARALLEL for especificado como OFF, os arquivos de dados serão gravados da seguinte forma:

<object_path>/<name_prefix><part-number>.

UNLOAD cria automaticamente arquivos criptografados usando a criptografia no lado do servidor (SSE) do Amazon S3, incluindo o arquivo manifesto se MANIFEST for usado. O comando COPY lê automaticamente os arquivos criptografados no lado do servidor durante a operação de carregamento. Você pode baixar arquivos criptografados do lado do servidor de forma transparente de seu bucket usando o console do Amazon S3 ou API. Para obter mais informações, consulte Proteção de dados usando criptografia no lado do servidor.

Para usar a criptografia do lado do cliente do Amazon S3, especifique a opção ENCRYPTED.

Importante

REGION é necessário quando o bucket do Amazon S3 não está na mesma Região da AWS que o banco de dados do Amazon Redshift.

autorização

O comando UNLOAD requer autorização para gravar dados no Amazon S3. O comando UNLOAD usa os mesmos parâmetros do comando COPY para autorização. Para obter mais informações, consulte Parâmetros de autorização na referência de sintaxe do comando COPY.

IAM_ROLE { default | 'arn:aws:iam::<Conta da AWS-id-1>:role/<role-name>'

Use a palavra-chave padrão para que o Amazon Redshift use a função do IAM definida como padrão e associada ao cluster quando o comando UNLOAD for executado.

Use o nome do recurso da Amazon (ARN) de uma função do IAM que seu cluster usa para autenticação e autorização. Se especificar IAM_ROLE, você não poderá usar ACCESS_KEY_ID e SECRET_ACCESS_KEY, SESSION_TOKEN ou CREDENTIALS. O IAM_ROLE pode ser conectado. Para obter mais informações, consulte Encadeamento de funções do IAM no Guia de gerenciamento do Amazon Redshift.

[ FORMAT [AS] ] CSV | PARQUET | JSON

Palavras-chave para especificar o formato de descarregamento para substituir o formato padrão.

No caso de CSV, descarregue para um arquivo de texto no formato CSV usando um caractere de vírgula ( , ) como delimitador padrão. Se um campo contiver delimitadores, aspas duplas, caracteres de nova linha ou retornos de carro, o campo no arquivo descarregado será colocado entre aspas duplas. Uma aspas duplas dentro de um campo de dados é recuada por aspas duplas adicionais. Quando nenhuma linha é descarregada, o Amazon Redshift pode gravar objetos vazios do Amazon S3.

No caso de PARQUET, descarregue para um arquivo no formato Apache Parquet versão 1.0. Por padrão, cada grupo de linhas é compactado usando a compactação SNAPPY. Para obter mais informações sobre o formato Apache Parquet, consulte Parquet.

Quando JSON, descarrega para um arquivo JSON com todas as linhas que contêm um objeto JSON, representando um registro completo no resultado da consulta. O Amazon Redshift é compatível com a gravação de JSON aninhado quando o resultado da consulta contém colunas SUPER. Para criar um objeto JSON válido, o nome de toda coluna da consulta deve ser exclusivo. No arquivo JSON, os valores booleanos são descarregados como t ou f, e os valores NULL são descarregados como null. Quando nenhuma linha é descarregada, o Amazon Redshift não grava objetos do Amazon S3.

As palavras-chave FORMAT e AS são opcionais. Não é possível usar CSV com FIXEDWIDTH nem ADDQUOTES. Não é possível usar PARQUET com DELIMITER, FIXEDWIDTH, ADDQUOTES, ESCAPE, NULL AS, HEADER, GZIP, BZIP2 ou ZSTD. O comando PARQUET com ENCRYPTED só é compatível com criptografia do lado do servidor com uma chave do AWS Key Management Service (SSE-KMS). Não é possível usar JSON com EADER, FIXEDWIDTH, ADDQUOTES, ESCAPE nem NULL AS.

PARTITION BY ( column_name [, ... ] ) [INCLUDE]

Especifica as chaves de partição para a operação de descarregamento. O comando UNLOAD particiona automaticamente arquivos de saída em pastas de partição com base nos valores de chave de partição, seguindo a convenção Apache Hive. Por exemplo, um arquivo Parquet que pertence à partição setembro de 2019 tem o seguinte prefixo: s3://my_bucket_name/my_prefix/year=2019/month=September/000.parquet.

O valor para column_name deve ser uma coluna nos resultados da consulta que está sendo descarregado.

Se você especificar PARTITION BY com a opção INCLUDE, as colunas de partição não serão removidas dos arquivos descarregados.

O Amazon Redshift não oferece suporte a literais de string em cláusulas PARTITION BY.

MANIFEST [ VERBOSE ]

Cria um arquivo manifesto que lista explicitamente detalhes dos arquivos de dados criados por processo UNLOAD. O manifesto é um arquivo de texto em formato JSON que lista o URL de cada arquivo gravado no Amazon S3.

Se MANIFEST for especificado com a opção VERBOSE, o manifesto incluirá os seguintes detalhes:

  • Os nomes das colunas e os tipos de dados, e, para os tipos de dados CHAR, VARCHAR ou NUMERIC, dimensões para cada coluna. Para os tipos de dados CHAR e VARCHAR, a dimensão é o comprimento. Para um tipo de dados DECIMAL ou NUMERIC, as dimensões são precisão e escala.

  • A contagem de linhas descarregada para cada arquivo. Se a opção HEADER for especificada, a contagem de linhas incluirá a linha de cabeçalho.

  • O tamanho total do arquivo de todos os arquivos descarregados e a contagem total de linhas descarregada para todos os arquivos. Se a opção HEADER for especificada, a contagem de linhas incluirá as linhas de cabeçalho.

  • O autor. Autor é sempre "Amazon Redshift".

Você pode especificar VERBOSE somente após MANIFEST.

O arquivo manifesto é gravado no mesmo prefixo de caminho do Amazon S3 que os arquivos descarregados no formato <object_path_prefix>manifest. Por exemplo, se UNLOAD especificar o prefixo “s3://mybucket/venue_“ do caminho do Amazon S3, a localização do arquivo manifesto será “s3://mybucket/venue_manifest“.

CABEÇALHO

Adiciona uma linha de cabeçalho que contém os nomes de coluna no topo de cada arquivo de saída. Opções de transformação de texto, como CSV, DELIMITER, ADDQUOTES e ESCAPE, também se aplicam à linha de cabeçalho. Não é possível usar HEADER com FIXEDWIDTH.

DELIMITER AS 'delimiter_character'

Especifica o único caractere ASCII usado para separar campos no arquivo de saída, como um caractere de barra vertical ( | ), uma vírgula ( , ) ou uma tabulação ( \t ). O delimitador padrão para arquivos de texto é um caractere de barra. O delimitador padrão para arquivos CSV é uma vírgula. A palavra-chave AS é opcional. Não é possível usar DELIMITER com FIXEDWIDTH. Se os dados contiverem o caractere delimitador, será necessário especificar a opção ESCAPE para ignorar o delimitador, ou usar ADDQUOTES para colocar os dados entre aspas duplas. Como alternativa, especifique um delimitador que não esteja contido nos dados.

FIXEDWIDTH 'fixedwidth_spec'

Descarrega os dados em um arquivo em que a largura de cada coluna tem um tamanho fixo, em vez separadas por um delimitador. A fixedwidth_spec é uma string que especifica o número de colunas e a largura das coluna. A palavra-chave AS é opcional. Como FIXEDWIDTH não trunca dados, a especificação para cada coluna na instrução UNLOAD precisa ser pelo menos do tamanho de entrada mais longa para aquela coluna. O formato de fixedwidth_spec é mostrado a abaixo:

'colID1:colWidth1,colID2:colWidth2, ...'

Não é possível usar FIXEDWIDTH com DELIMITER ou HEADER.

ENCRYPTED [AUTO]

Especifica que os arquivos de saída no Amazon S3 são criptografados usando criptografia do lado do servidor Amazon S3 ou criptografia do lado do cliente. Se MANIFEST for especificado, o arquivo manifesto também será criptografado. Para obter mais informações, consulte Descarregamento de arquivos de dados criptografados. Se você não especificar o parâmetro ENCRYPTED, UNLOAD criará automaticamente arquivos criptografados usando a criptografia do servidor Amazon S3 com chaves de criptografia gerenciadas (SSE-S3) da AWS.

Para ENCRYPTED, você pode querer descarregar no Amazon S3 usando criptografia do lado do servidor com uma chave do AWS KMS (SSE-KMS). Em caso afirmativo, use o parâmetro KMS_KEY_ID para fornecer o ID da chave. Você não pode usar o parâmetro CREDENTIALS com parâmetro KMS_KEY_ID. Se você executar um comando UNLOAD para dados usando KMS_KEY_ID, poderá fazer uma operação COPY para os mesmos dados sem especificar uma chave.

Para descarregar no Amazon S3 usando criptografia do lado do cliente com uma chave simétrica fornecida pelo cliente, forneça a chave de duas maneiras. Para fornecer a chave, use o parâmetro MASTER_SYMMETRIC_KEY ou a parte master_symmetric_key de uma string de credencial CREDENTIALS. Se você descarregar dados usando uma chave simétrica raiz, certifique-se de fornecer a mesma chave ao executar uma operação COPY para os dados criptografados.

UNLOAD não oferece suporte à criptografia do servidor Amazon S3 com uma chave fornecida pelo cliente (SSE-C).

Se ENCRYPTED AUTO for usado, o comando UNLOAD busca a chave de criptografia padrão do AWS KMS na propriedade de bucket do Amazon S3 de destino e criptografa os arquivos gravados no Amazon S3 com a chave do AWS KMS. Se o bucket não tiver a chave de criptografia padrão do AWS KMS, UNLOAD criará automaticamente arquivos criptografados usando a criptografia do lado do servidor Amazon Redshift com chaves de criptografia gerenciadas (SSE-S3) da AWS. Não é possível usar essa opção com KMS_KEY_ID, MASTER_SYMMETRIC_KEY ou CREDENTIALS que contém master_symmetric_key.

KMS_KEY_ID 'key-id'

Especifica o ID de chave para uma chave do AWS Key Management Service (AWS KMS) a ser usada para criptografar arquivos de dados no Amazon S3. Para ter mais informações, consulte O que é o AWS Key Management Service? Se você especificar KMS_KEY_ID, você deve especificar o parâmetro ENCRYPTED também. Se você especificar KMS_KEY_ID, não autentique usando o parâmetro CREDENTIALS. Em vez disso, use IAM_ROLE ou ACCESS_KEY_ID and SECRET_ACCESS_KEY.

MASTER_SYMMETRIC_KEY 'root_key'

Especifica a chave simétrica raiz a ser usada para criptografar arquivos de dados no Amazon s3. Se você especificar MASTER_SYMMETRIC_KEY, também deve especificar o parâmetro ENCRYPTED. Não é possível usar MASTER_SYMMETRIC_KEY com o parâmetro CREDENTIALS. Para obter mais informações, consulte Carregar arquivos de dados criptografados do Amazon S3.

BZIP2

Descarrega dados em um ou mais arquivos compactados bzip2 por fatia. Cada arquivo resultante recebe uma extensão .bz2.

GZIP

Descarrega dados em um ou mais arquivos compactados gzip por fatia. Cada arquivo resultante recebe uma extensão .gz.

ZSTD

Descarrega dados em um ou mais arquivos compactados Zstandard por fatia. Cada arquivo resultante recebe uma extensão .zst.

ADDQUOTES

Coloca aspas em cada campo de dados descarregado para que o Amazon Redshift possa descarregar os valores de dados que contêm o próprio delimitador. Por exemplo, se o delimitador for uma vírgula, você pode descarregar e recarregar os seguintes dados com êxito:

"1","Hello, World"

Se as aspas não forem adicionadas, a string Hello, World será analisada como dois campos separados.

Alguns formatos de saída não são compatíveis com ADDQUOTES.

Se você usar ADDQUOTES, deve especificar REMOVEQUOTES em COPY se recarregar dados.

NULL AS 'string-nula'

Especifica uma string que representa um valor nulo em arquivos de descarregamento. Se essa opção for usada, todos os arquivos de saída contêm a string especificada em vez de todos os valores nulos encontrados nos dados selecionados. Se essa opção não for especificada, os valores nulos serão descarregados como:

  • String de tamanho zero para saída delimitada

  • String de espaço em branco para saída de largura fixa

Se uma string nula é específica para um tamanho fixo de descarregamento e o tamanho de uma coluna de saída é inferior ao tamanho de string nulo, o seguinte comportamento ocorre:

  • Um campo vazio é a saída para colunas sem caracteres

  • Um erro é relatado para colunas com caracteres

Ao contrário de outros tipos de dados em que uma string definida pelo usuário representa um valor nulo, o Amazon Redshift exporta as colunas de dados SUPER usando o formato JSON e a representa como nula, conforme determinado pelo formato JSON. Como resultado, as colunas de dados SUPER ignoram a opção NULL [AS] usada nos comandos UNLOAD.

ESCAPE

Para colunas CHAR e VARCHAR em arquivos de descarregamento delimitados, um caractere de escape (\) é posicionado antes de cada ocorrência dos seguintes caracteres:

  • Linefeed: \n

  • Retorno de carro: \r

  • O caractere delimitador especificado para dados descarregados.

  • Caractere de escape: \

  • Um caractere de aspas: " ou ' (se ambos ESCAPE e ADDQUOTES estiverem especificados no comando UNLOAD).

Importante

Se você carregou os dados usando COPY com a opção ESCAPE, também deverá especificar a opção ESCAPE com o comando UNLOAD para gerar o arquivo de saída recíproco. Da mesma maneira, se usar UNLOAD com a opção ESCAPE, você precisará usar ESCAPE quando usar o comando COPY nos mesmos dados.

ALLOWOVERWRITE

Como padrão, UNLOAD apresenta falha se localizar arquivos que possivelmente substituiria. Se ALLOWOVERWRITE for especificado, UNLOAD substituirá arquivos existentes, incluindo o arquivo manifesto.

CLEANPATH

A opção CLEANPATH remove arquivos existentes localizados no caminho do Amazon S3 especificado na cláusula TO antes de descarregar arquivos para o local especificado.

Se você incluir a cláusula PARTITION BY, os arquivos existentes serão removidos somente das pastas de partição para receber novos arquivos gerados pela operação UNLOAD.

Você deve ter a permissão s3:DeleteObject no bucket do Amazon S3. Para obter mais informações, consulte Políticas e permissões no Amazon S3 no Guia do usuário do Amazon Simple Storage Service. Os arquivos removidos usando a opção CLEANPATH serão excluídos permanentemente e não podem ser recuperados.

Você não pode especificar a opção CLEANPATH se especificar a opção ALLOWOVERWRITE.

PARALLEL

Por padrão, UNLOAD grava dados em paralelo a vários arquivos, de acordo com o número de fatias no cluster. A opção padrão é ON ou TRUE. Se PARALLEL estiver configurado como OFF ou FALSE, UNLOAD gravará um ou mais arquivos de dados em série, classificado(s) absolutamente de acordo com a cláusula ORDER BY, se houver. O tamanho máximo de um arquivo de dados é 6,2 GB. Dessa forma, por exemplo, se você descarrega 13,4 GB de dados, a opção UNLOAD cria os seguintes três arquivos.

s3://mybucket/key000 6.2 GB s3://mybucket/key001 6.2 GB s3://mybucket/key002 1.0 GB
nota

O comando UNLOAD é projetado para usar processamento paralelo. Recomendamos deixar PARALLEL habilitado na maioria dos casos, especialmente se os arquivos são usados para carregar tabelas usando um comando COPY.

MAXFILESIZE [AS] max-size [ MB | GB ]

Especifica o tamanho máximo de arquivos criados por UNLOAD no Amazon S3. Especifique um valor decimal entre 5 MB e 6,2 GB. A palavra-chave AS é opcional. A unidade padrão é MB. Se MAXFILESIZE não for especificado, o tamanho de arquivo máximo padrão será 6,2 GB. O tamanho do arquivo de manifesto, se houver, não é afetado por MAXFILESIZE.

ROWGROUPSIZE [AS] size [ MB | GB ]

Especifica o tamanho dos grupos de linhas. Escolher um tamanho maior pode reduzir o número de grupos de linhas, reduzindo a quantidade de comunicação de rede. Especifique um valor inteiro entre 32 MB e 128 MB. A palavra-chave AS é opcional. A unidade padrão é MB.

Se ROWGROUPSIZE não for especificado, o tamanho padrão será 32 MB. Para usar esse parâmetro, o formato de armazenamento deve ser Parquet e o tipo de nó deve ser ra3.4xlarge, ra3.16xlarge ou dc2.8xlarge.

REGION [AS] 'aws-region'

Especifica a Região da AWS onde está localizado o bucket do Amazon S3 de destino. O parâmetro REGION é necessário para a operação UNLOAD em um bucket do Amazon S3 que não esteja na mesma Região da AWS que o banco de dados do Amazon Redshift.

O valor de aws_region deve corresponder a uma região da AWS listada na tabela de Regiões e endpoints do Amazon Redshift na Referência geral da AWS.

Por padrão, UNLOAD assume que o bucket do Amazon S3 de destino está localizado na mesma Região da AWS que o banco de dados do Amazon Redshift.

EXTENSÃO “extension-name

Especifica a extensão do arquivo a ser anexada aos nomes dos arquivos descarregados. O Amazon Redshift não executa nenhuma validação, então você deve verificar se a extensão de arquivo especificada está correta. Se você estiver usando um método de compactação como o GZIP, ainda precisará especificar .gz no parâmetro de extensão. Se você não fornecer nenhuma extensão, o Amazon Redshift não adicionará nada ao nome do arquivo. Se você especificar um método de compactação sem fornecer uma extensão, o Amazon Redshift só adicionará a extensão do método de compactação ao nome do arquivo.

Observações de uso

Usar ESCAPE para todas as operações UNLOAD de texto delimitadas

Quando você usa UNLOAD com um delimitador, seus dados podem incluir esse delimitador ou qualquer um dos caracteres listados na descrição da opção ESCAPE. Nesse caso, você deve usar a opção ESCAPE com o comando UNLOAD. Se você não usar a opção ESCAPE com UNLOAD, poderá ocorrer uma falha nas operações COPY subsequentes que usem os dados descarregados.

Importante

É altamente recomendável que você sempre use ESCAPE com os comandos UNLOAD e COPY. A exceção será se você tiver certeza de que seus dados não contêm nenhum delimitador nem outros caracteres que talvez precisem ser ignorados.

Perda de precisão de ponto flutuante

Você pode se deparar com perda de precisão para dados flutuantes sucessivamente descarregados e recarregados.

Cláusula de limitação

A consulta SELECT não pode usar uma cláusula LIMIT na SELECT externa. Por exemplo, o seguinte comando UNLOAD retorna uma falha:

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

Em vez disso, use uma cláusula LIMIT aninhada, como no exemplo a seguir.

unload ('select * from venue where venueid in (select venueid from venue order by venueid desc limit 10)') to 's3://mybucket/venue_pipe_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Você também pode preencher uma tabela usando SELECT…INTO ou CREATE TABLE AS com uma cláusula LIMIT e descarregar da tabela.

Descarregar uma coluna do tipo de dados GEOMETRY

Só é possível descarregar colunas GEOMETRY para texto ou formato CSV. Não é possível descarregar dados GEOMETRY com a opção FIXEDWIDTH. Os dados são descarregados na forma hexadecimal do binário bem-conhecido estendido (EWKB). Se o tamanho dos dados EWKB for maior que 4 MB, ocorrerá um aviso porque os dados não poderão ser carregados em uma tabela mais tarde.

Descarregar o tipo de dados HLLSKETCH

Só é possível descarregar colunas HLLSKETCH para texto ou formato CSV. Não é possível descarregar dados HLLSKETCH com a opção FIXEDWIDTH. Os dados são descarregados no formato Base64 para esboços de HyperLogLog densos ou no formato JSON para esboços de HyperLogLog esparsos. Para obter mais informações, consulte Funções HyperLogLog.

O exemplo a seguir exporta uma tabela contendo colunas HLLSKETCH para um arquivo.

CREATE TABLE a_table(an_int INT, b_int INT); INSERT INTO a_table VALUES (1,1), (2,1), (3,1), (4,1), (1,2), (2,2), (3,2), (4,2), (5,2), (6,2); CREATE TABLE hll_table (sketch HLLSKETCH); INSERT INTO hll_table select hll_create_sketch(an_int) from a_table group by b_int; UNLOAD ('select * from hll_table') TO 's3://mybucket/unload/' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' NULL AS 'null' ALLOWOVERWRITE CSV;

Descarregar uma coluna do tipo de dados VARBYTE

Só é possível descarregar colunas VARBYTE para texto ou formato CSV. Os dados são descarregados em forma hexadecimal. Não é possível descarregar dados VARBYTE com a opção FIXEDWIDTH. Não há suporte para a opção ADDQUOTES de UNLOAD para um CSV. Uma coluna VARBYTE não pode ser usada como coluna PARTITIONED BY.

Cláusula FORMAT AS PARQUET

Esteja ciente destas considerações ao usar o FORMAT AS PARQUET:

  • O descarregamento para Parquet não usa compactação no nível de arquivo. Cada grupo de linhas é compactado com SNAPPY.

  • Se MAXFILESIZE não for especificado, o tamanho de arquivo máximo padrão será 6,2 GB. Você pode usar MAXFILESIZE para especificar um tamanho de arquivo de 5 MB a 6,2 GB. O tamanho real do arquivo é aproximado quando o arquivo está sendo gravado, então ele pode não ser exatamente igual ao número especificado.

    Para maximizar a performance da verificação, o Amazon Redshift tenta criar arquivos Parquet que contenham grupos de linhas de 32 MB igualmente dimensionados. O valor MAXFILESIZE especificado é automaticamente arredondado para baixo para o múltiplo mais próximo de 32 MB. Por exemplo, se você especificar MAXFILESIZE 200 MB, cada arquivo Parquet descarregado será de aproximadamente 192 MB (grupo de linhas de 32 MB x 6 = 192 MB).

  • Se uma coluna usar o formato de dados TIMESTAMPTZ, somente os valores de timestamp serão descarregados. As informações de fuso horário não são descarregadas.

  • Não especifique prefixos de nome de arquivo que começam com caracteres de sublinhado (_) ou ponto final (.). O Redshift Spectrum trata os arquivos que começam com esses caracteres como arquivos ocultos e os ignora.

Cláusula PARTITION BY

Esteja ciente destas considerações ao usar o PARTITION BY:

  • As colunas de partição não são incluídas no arquivo de saída.

  • Certifique-se de incluir colunas de partição na consulta SELECT usada na instrução UNLOAD. Você pode especificar qualquer número de colunas de partição no comando UNLOAD. No entanto, há uma limitação de que deve haver pelo menos uma coluna sem partição para fazer parte do arquivo.

  • Se a chave-valor de partição for nulo, o Amazon Redshift descarregará automaticamente esses dados em uma partição padrão chamada partition_column=__HIVE_DEFAULT_PARTITION__.

  • O comando UNLOAD não faz nenhuma chamada para um catálogo externo. Para registrar suas novas partições para fazer parte da tabela externa existente, use um ALTER TABLE ... separado. Comando ADD PARTITION ... Como alternativa, você pode executar um comando CREATE EXTERNAL TABLE para registrar os dados descarregados como uma nova tabela externa. Você também pode usar um crawler do AWS Glue para preencher o catálogo de dados. Para obter mais informações, consulte Definição de crawlers no Guia do desenvolvedor do AWS Glue.

  • Se você usar a opção MANIFEST, o Amazon Redshift gerará somente um arquivo manifesto na pasta raiz do Amazon S3.

  • Os tipos de dados da coluna que você pode usar como chave de partição são SMALLINT, INTEGER, BIGINT, DECIMAL, REAL, BOOLEAN, CHAR, VARCHAR, DATE e TIMESTAMP.

Usar o privilégio ASSUMEROLE para conceder acesso a uma função do IAM para operações UNLOAD

Para fornecer acesso a usuários e grupos específicos a uma função do IAM para operações UNLOAD, um superusuário pode conceder o privilégio ASSUMEROLE em uma função do IAM a usuários e grupos. Para ter mais informações, consulte GRANT.

UNLOAD não é compatível com aliases de ponto de acesso do Amazon S3

Não é possível usar os aliases de ponto de acesso do Amazon S3 com comandos UNLOAD.

Exemplos

Para ver exemplos que mostram como usar o comando UNLOAD, consulte Exemplos de UNLOAD.