COPY do Amazon S3 - Amazon Redshift

COPY do Amazon S3

Para carregar dados de arquivos localizados em um ou mais buckets do S3, use a cláusula FROM para indicar como o COPY localiza os arquivos no Amazon S3. Você pode fornecer o caminho do objeto para os arquivos de dados como parte da cláusula FROM ou a localização de um arquivo manifesto que contenha uma lista de caminhos de objeto do Amazon S3. COPY de Amazon S3 usa uma conexão HTTPS. 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.

Importante

Se os buckets do Amazon S3 que mantêm os arquivos de dados não residirem na mesma região da AWS que o cluster, use o parâmetro REGION para especificar a região na qual os dados estão localizados.

Sintaxe

FROM { 's3://objectpath' | 's3://manifest_file' } authorization | MANIFEST | ENCRYPTED | REGION [AS] 'aws-region' | optional-parameters

Exemplos

O exemplo a seguir usa um caminho de objeto para carregar dados do Amazon S3.

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

O exemplo a seguir usa um arquivo manifesto para carregar dados do Amazon S3.

copy customer from 's3://amzn-s3-demo-bucket/cust.manifest' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' manifest;

Parâmetros

FROM

A origem dos dados a serem carregados. Para obter mais informações sobre a codificação do arquivo do Amazon S3, consulte Parâmetros da conversão de dados.

's3://copy_from_s3_objectpath'

Especifica o caminho para os objetos do Amazon S3 que contêm os dados por exemplo, 's3://amzn-s3-demo-bucket/custdata.txt'. O parâmetro s3://copy_from_s3_objectpath pode referenciar um único arquivo ou um conjunto de objetos ou pastas que tenham o mesmo prefixo de chaves. Por exemplo, o nome custdata.txt é um prefixo de chaves que referencia um número de arquivos físicos: custdata.txt,custdata.txt.1, custdata.txt.2, custdata.txt.bak e assim por diante. O prefixo de chaves também pode referenciar um número de pastas. Por exemplo, 's3://amzn-s3-demo-bucket/custfolder' se refere às pastas custfolder, custfolder_1, custfolder_2 e assim por diante. Se um prefixo de chaves referencia várias pastas, todos os arquivos nas pastas são carregados. Se um prefixo de chaves corresponder a um arquivo, bem como a uma pasta, como custfolder.log, COPY também tentará carregar o arquivo. Se um prefixo de chaves puder resultar na tentativa de COPY de carregar arquivos indesejados, use um arquivo manifesto. Para obter mais informações, consulte copy_from_s3_manifest_file, a seguir.

Importante

Se o bucket do S3 que mantém os arquivos de dados não residir na mesma região da AWS que o cluster, use o parâmetro REGION para especificar a região na qual os dados estão localizados.

Para obter mais informações, consulte Carregar dados do Amazon S3.

's3://copy_from_s3_manifest_file'

Especifica a chave de objeto do Amazon S3 para um arquivo manifesto que lista os arquivos de dados a serem carregados. O argumento 's3://copy_from_s3_manifest_file' deve referenciar explicitamente um único arquivo, por exemplo, 's3://amzn-s3-demo-bucket/manifest.txt'. Ele não pode fazer referência a um prefixo de chaves.

O manifesto é um arquivo de texto em formato JSON que lista o URL de cada arquivo que deve ser carregado do Amazon S3. O URL inclui o nome do bucket e o caminho de objeto completo do arquivo. Os arquivos especificados no manifesto podem estar em buckets diferentes, mas todos os buckets devem estar na mesma região da AWS que o cluster do Amazon Redshift. Se for listado duas vezes, o arquivo será carregado duas vezes. O exemplo a seguir mostra o JSON de um manifesto que carrega três arquivos.

{ "entries": [ {"url":"s3://amzn-s3-demo-bucket1/custdata.1","mandatory":true}, {"url":"s3://amzn-s3-demo-bucket1/custdata.2","mandatory":true}, {"url":"s3://amzn-s3-demo-bucket2/custdata.1","mandatory":false} ] }

As aspas duplas são obrigatórias e devem ser simples (0x22), e não inclinadas ou "inteligentes". Cada entrada no manifesto também pode incluir um sinalizador mandatory. Se mandatory estiver definido como true, COPY será encerrado se não encontrar o arquivo dessa entrada; do contrário, COPY continuará. O valor padrão para mandatory é false.

Ao carregar arquivos de dados em ORC ou em formato Parquet, um campo meta é necessário, conforme exibido no seguinte exemplo.

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

O arquivo manifesto não deverá ser criptografado ou compactado, mesmo se as opções ENCRYPTED, GZIP, LZOP, BZIP2 ou ZSTD forem especificadas. COPY retornará um erro se o arquivo de manifesto especificado não for encontrado ou se ele não estiver formado corretamente.

Se um arquivo manifesto for usado, o parâmetro MANIFEST deverá ser especificado com o comando COPY. Se o parâmetro MANIFEST não for especificado, COPY vai pressupor que o arquivo especificado com FROM seja um arquivo de dados.

Para obter mais informações, consulte Carregar dados do Amazon S3.

autorização

O comando COPY precisa de autorização para acessar dados em outro recurso da AWS, inclusive em Amazon S3, Amazon EMR, Amazon DynamoDB e Amazon EC2. É possível conceder essa autorização referenciando um perfil do AWS Identity and Access Management (IAM) anexado ao cluster (controle de acesso baseado em perfil) ou fornecendo as credenciais de acesso de um usuário (controle de acesso baseado em chave). Para mais segurança e a flexibilidade, recomendamos usar o controle de acesso baseado em função do IAM. Para obter mais informações, consulte Parâmetros de autorização.

MANIFEST

Especifica que um manifesto é usado para identificar os arquivos de dados a serem carregados do Amazon S3. Se o parâmetro MANIFEST for usado, COPY carregará dados dos arquivos listados no manifesto referenciado por 's3://copy_from_s3_manifest_file'. Se o arquivo de manifesto não for encontrado ou não estiver formado corretamente, ocorrerá uma falha no COPY. Para obter mais informações, consulte Uso de um manifesto para especificar arquivos de dados.

ENCRYPTED

Uma cláusula que especifica que os arquivos de entrada no Amazon S3 são criptografados com criptografia do lado do cliente com chaves gerenciadas pelo cliente. Para obter mais informações, consulte Carregar arquivos de dados criptografados do Amazon S3. Não especifique ENCRYPTED se arquivos de entrada forem criptografados usando-se criptografia no lado do servidor do Amazon S3 (SSE-KMS ou SSE-S3). COPY lê arquivos criptografados no lado do servidor automaticamente.

Se você especificar o parâmetro ENCRYPTED, também deverá especificar o parâmetro MASTER_SYMMETRIC_KEY ou incluir o valor master_symmetric_key na string CREDENTIALS.

Se os arquivos criptografados estiverem em formato compactado, adicione o parâmetro GZIP, LZOP, BZIP2 ou ZSTD.

Arquivos manifesto e JSONPaths não devem ser criptografados, mesmo se a opção ENCRYPTED for especificada.

MASTER_SYMMETRIC_KEY 'root_key'

A chave simétrica raiz que foi usada para criptografar arquivos de dados no Amazon S3. Se MASTER_SYMMETRIC_KEY for especificado, o parâmetro ENCRYPTED também deverá ser especificado. MASTER_SYMMETRIC_KEY não pode ser usado com o parâmetro CREDENTIALS. Para obter mais informações, consulte Carregar arquivos de dados criptografados do Amazon S3.

Se os arquivos criptografados estiverem em formato compactado, adicione o parâmetro GZIP, LZOP, BZIP2 ou ZSTD.

REGION [AS] 'aws-region'

Especifica a região da AWS onde os dados de origem estão localizados. REGION é necessário para COPY em um bucket do Amazon S3 ou uma tabela do DynamoDB quando o recurso da AWS que contém os dados não está na mesma região que o cluster do Amazon Redshift.

O valor de aws_region deve combinar com uma região listada na tabela regiões e endpoints do Amazon Redshift.

Se o parâmetro REGION for especificado, todos os recursos, inclusive um arquivo manifesto ou vários buckets do Amazon S3, devem estar localizados na região especificada.

nota

A transferência de dados entre regiões incorre em cobranças adicionais em relação ao bucket do Amazon S3 ou à tabela do DynamoDB que contém dados. Para obter mais informações sobre preços, consulte Transferência de dados OUT do Amazon S3 para outra região da AWS na página Preço do Amazon S3 e Transferência de dados OUT na página de Preço do Amazon DynamoDB.

Por padrão, COPY pressupõe que os dados estejam localizados na mesma região do cluster do Amazon Redshift.

Parâmetros opcionais

Você também pode especificar os seguintes parâmetros com COPY do Amazon S3:

Parâmetros incompatíveis

Você não pode usar os seguintes parâmetros com COPY do Amazon S3:

  • SSH

  • READRATIO