COPY - Amazon Redshift

COPY

Carrega dados em uma tabela de arquivos de dados ou de uma tabela do Amazon DynamoDB. Os arquivos podem estar localizados em um bucket do Amazon Simple Storage Service (Amazon S3), em um cluster do Amazon EMR ou em um host remoto acessado com o uso de uma conexão SSH (Secure Shell).

nota

As tabelas externas do Amazon Redshift Spectrum são somente leitura. Não é possível usar o comando COPY em uma tabela externa.

O comando COPY acrescenta os novos dados de entrada a todas as linhas existentes na tabela.

O tamanho máximo de uma única linha de entrada de qualquer origem é 4 MB.

nota

Para usar o comando COPY, você deve ter o privilégio INSERT para a tabela do Amazon Redshift.

Sintaxe de COPY

COPY table-name [ column-list ] FROM data_source authorization [ [ FORMAT ] [ AS ] data_format ] [ parameter [ argument ] [, ... ] ]

Visão geral da sintaxe de COPY

Você pode realizar uma operação COPY com apenas três parâmetros: um nome de tabela, uma fonte de dados e uma autorização para acessar os dados.

O Amazon Redshift estende a funcionalidade do comando COPY para permitir o carregamento de dados em diversos formatos de dados de várias fontes de dados, o controle de acesso para carregar dados, o gerenciamento de transformações de dados e o gerenciamento da operação de carregamento.

Esta seção apresenta os parâmetros do comando COPY necessários e agrupa os parâmetros opcionais por função. Os tópicos subsequentes descrevem cada parâmetro e explicam como diversas opções funcionam juntas. Você também pode ir diretamente até a descrição de um parâmetro usando a lista de parâmetros alfabética.

Parâmetros necessários

O comando COPY exige três elementos:

O comando COPY mais simples usa o formato a seguir.

COPY table-name FROM data-source authorization;

O exemplo a seguir criar uma tabela chamada CATDEMO e carrega a tabela com dados de exemplo de um arquivo de dados no Amazon S3 chamado category_pipe.txt.

create table catdemo(catid smallint, catgroup varchar(10), catname varchar(10), catdesc varchar(50));

No exemplo a seguir, a origem dos dados do comando COPY é um arquivo de dados chamado category_pipe.txt na pasta tickit de um bucket do Amazon S3 chamado awssampledbuswest2. O comando COPY tem autorização para acessar o bucket do Amazon S3 por meio de uma função do AWS Identity and Access Management (IAM). Se o cluster tiver uma função do IAM existente com permissão para acessar o Amazon S3 anexado, você poderá substituir o nome do recurso da Amazon (ARN) no comando COPY a seguir e executá-lo.

copy catdemo from 's3://awssampledbuswest2/tickit/category_pipe.txt' iam_role 'arn:aws:iam::<aws-account-id>:role/<role-name>' region 'us-west-2';

Para conhecer as etapas para criar uma função do IAM, consulte Etapa 2: Criar uma função do IAM no Guia de conceitos básicos do Amazon Redshift. Para obter instruções completas sobre como usar comandos COPY para carregar dados de exemplo, inclusive instruções para carregar dados de outras regiões da AWS, consulte Etapa 6: Carregar dados de exemplo do Amazon S3 no Guia de conceitos básicos do Amazon Redshift.

table-name

O nome da tabela de destino do comando COPY. A tabela já deve existir no banco de dados. A tabela pode ser temporária ou persistente. O comando COPY acrescenta os novos dados de entrada a todas as linhas existentes na tabela.

FROM data-source

O local dos dados de origem a serem carregados na tabela de destino. É possível especificar um arquivo de manifesto com algumas fontes de dados.

O repositório de dados mais usado é um bucket do Amazon S3. Você também pode carregar os arquivos de dados localizados em um cluster do Amazon EMR, uma instância do Amazon EC2 ou um host remoto que o cluster pode acessar usando uma conexão SSH, ou ainda pode carregar diretamente de uma tabela do DynamoDB.

Autorização

Uma cláusula que indica o método que o seu cluster usa na autenticação e autorização para acessar outros recursos da AWS. 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. Você pode fornecer essa autorização referenciando uma função do IAM anexada ao cluster ou fornecendo o ID de chave de acesso e a chave de acesso secreta para um usuário do IAM.

Parâmetros opcionais

Opcionalmente, você pode especificar como o COPY mapeia os dados de campo para colunas na tabela de destino, definir atributos de dados de origem para permitir que o comando COPY leia e analise corretamente os dados de origem e gerenciar quais operações o comando COPY executa durante o processo de carregamento.

Mapeamento de colunas

Por padrão, COPY insere valores de campo nas colunas da tabela de destino na mesma ordem dos campos ocorridos nos arquivos de dados. Se a ordem de coluna padrão não funcionar, você poderá especificar uma lista de colunas ou usar expressões JSONPath para mapear campos de dados de origem para as colunas de destino.

Parâmetros de formato de dados

Você pode carregar dados de arquivos de texto em formato de largura fixa, delimitado por caractere, CSV (Comma-Separated Values) ou JSON, ou de arquivos Avro.

Por padrão, o comando COPY espera que os dados de origem estejam em arquivos de texto UTF-8 delimitados por caractere. O delimitador padrão é um caractere de barra ( | ). Se os dados de origem estiverem em outro formato, use os parâmetros a seguir para especificar o formato de dados.

Parâmetros da conversão de dados

À medida que carrega a tabela, COPY tenta converter implicitamente as strings nos dados de origem no tipo de dados da coluna de destino. Se precisar especificar uma conversão diferente do comportamento padrão, ou se a conversão padrão resultar em erros, você poderá gerenciar conversões de dados especificando os parâmetros a seguir.

Operações de carregamento de dados

Gerencie o comportamento padrão da operação de carregamento para solucionar problemas ou reduzir o tempo de carregamento especificando os parâmetros a seguir.

Uso do comando COPY

Para obter mais informações sobre como usar o comando COPY, consulte os seguintes tópicos: