Importar dados do Amazon S3 para uma instância de banco de dados do RDS para PostgreSQL - Amazon Relational Database Service

Importar dados do Amazon S3 para uma instância de banco de dados do RDS para PostgreSQL

Importe dados do bucket do Amazon S3 usando a função table_import_from_s3 da extensão aws_s3. Para obter informações de referência, consulte aws_s3.table_import_from_s3.

nota

Os exemplos a seguir usam o método de perfil do IAM para conceder acesso ao bucket do Amazon S3. Assim, as chamadas de função do aws_s3.table_import_from_s3 não incluem parâmetros de credenciais.

Veja a seguir um exemplo típico.

postgres=> SELECT aws_s3.table_import_from_s3( 't1', '', '(format csv)', :'s3_uri' );

Os parâmetros são os seguintes:

  • t1 – o nome da tabela na instância de banco de dados do PostgreSQL na qual os dados devem ser copiados.

  • '' – uma lista opcional de colunas na tabela de banco de dados. É possível usar esse parâmetro para indicar quais colunas dos dados do S3 devem ser inseridos em quais colunas da tabela. Se nenhuma coluna for especificada, todas as colunas serão copiadas para a tabela. Para obter um exemplo de uso de uma lista de colunas, consulte Importar um arquivo do Amazon S3 que usa um delimitador personalizado.

  • (format csv) – argumentos COPY do PostgreSQL. O processo de cópia usa os argumentos e o formato do comando COPY PostgreSQL para importar os dados. As opções de formato incluem valores separados por vírgula (CSV), conforme mostrado neste exemplo, texto e binário. O padrão é texto.

  • s3_uri – uma estrutura que contém as informações que identificam o arquivo do Amazon S3. Para obter um exemplo de como usar a função aws_commons.create_s3_uri para criar uma estrutura s3_uri, consulte Visão geral da importação de dados do Amazon S3.

Para ter mais informações sobre essa função, consulte aws_s3.table_import_from_s3.

A função aws_s3.table_import_from_s3 retorna texto. Para especificar outros tipos de arquivos para importação de um bucket do Amazon S3, veja um dos exemplos a seguir.

nota

Importar 0 byte causará um erro.

Importar um arquivo do Amazon S3 que usa um delimitador personalizado

O exemplo a seguir mostra como importar um arquivo que usa um delimitador personalizado. Ele também mostra como controlar onde colocar os dados na tabela de banco de dados usando o parâmetro column_list da função aws_s3.table_import_from_s3.

Para este exemplo, suponha que as informações a seguir estejam organizadas em colunas delimitadas por barras verticais no arquivo do Amazon S3.

1|foo1|bar1|elephant1 2|foo2|bar2|elephant2 3|foo3|bar3|elephant3 4|foo4|bar4|elephant4 ...
Como importar um arquivo que usa um delimitador personalizado
  1. Crie uma tabela no banco de dados para os dados importados.

    postgres=> CREATE TABLE test (a text, b text, c text, d text, e text);
  2. Use o seguinte formato da função aws_s3.table_import_from_s3 para importar dados do arquivo do Amazon S3.

    Você pode incluir a chamada de função aws_commons.create_s3_uri em linha dentro da chamada de função aws_s3.table_import_from_s3 para especificar o arquivo.

    postgres=> SELECT aws_s3.table_import_from_s3( 'test', 'a,b,d,e', 'DELIMITER ''|''', aws_commons.create_s3_uri('amzn-s3-demo-bucket', 'pipeDelimitedSampleFile', 'us-east-2') );

Os dados estão agora na tabela nas colunas a seguir.

postgres=> SELECT * FROM test; a | b | c | d | e ---+------+---+---+------+----------- 1 | foo1 | | bar1 | elephant1 2 | foo2 | | bar2 | elephant2 3 | foo3 | | bar3 | elephant3 4 | foo4 | | bar4 | elephant4

Importar um arquivo do Amazon S3 compactado (gzip)

O exemplo a seguir mostra como importar um arquivo do Amazon S3 compactado com gzip. O arquivo que você importa precisa ter os seguintes metadados do Simple Storage Service (Amazon S3):

  • Chave: Content-Encoding

  • Valor: gzip

Se você carregar o arquivo usando o AWS Management Console, os metadados geralmente são aplicados pelo sistema. Para obter informações sobre o carregamento de arquivos para o Simple Storage Service (Amazon S3) usando o AWS Management Console, a AWS CLI ou a API, consulte Carregar objetos no Guia do usuário do Amazon Simple Storage Service.

Para ter mais informações sobre metadados do Simple Storage Service (Amazon S3) e detalhes sobre metadados fornecidos pelo sistema, consulte Editar metadados de objeto no console do Simple Storage Service (Amazon S3) no Guia do usuário do Amazon Simple Storage Service.

Importe o arquivo gzip para a sua instância de banco de dados do RDS for PostgreSQL do , conforme mostrado a seguir.

postgres=> CREATE TABLE test_gzip(id int, a text, b text, c text, d text); postgres=> SELECT aws_s3.table_import_from_s3( 'test_gzip', '', '(format csv)', 'amzn-s3-demo-bucket', 'test-data.gz', 'us-east-2' );

Importar um arquivo do Amazon S3 codificado

O exemplo a seguir mostra como importar um arquivo do Amazon S3 que tenha codificação Windows-1252.

postgres=> SELECT aws_s3.table_import_from_s3( 'test_table', '', 'encoding ''WIN1252''', aws_commons.create_s3_uri('amzn-s3-demo-bucket', 'SampleFile', 'us-east-2') );