Exportar dados de consulta usando a função aws_s3.query_export_to_s3 - Amazon Aurora

Exportar dados de consulta usando a função aws_s3.query_export_to_s3

Exporte os dados do PostgreSQL para o Amazon S3 chamando a função aws_s3.query_export_to_s3.

Pré-requisitos

Antes de usar a função aws_s3.query_export_to_s3, verifique se você concluiu os seguintes pré-requisitos:

Os exemplos a seguir usam uma tabela de banco de dados chamada sample_table. Esses exemplos exportam os dados para um bucket chamado amzn-s3-demo-bucket. A tabela e os dados de exemplo são criados com as seguintes instruções SQL no psql.

psql=> CREATE TABLE sample_table (bid bigint PRIMARY KEY, name varchar(80)); psql=> INSERT INTO sample_table (bid,name) VALUES (1, 'Monday'), (2,'Tuesday'), (3, 'Wednesday');

Chamar aws_s3.query_export_to_s3

Veja a seguir as formas básicas de chamar a função aws_s3.query_export_to_s3.

Esses exemplos usam a variável s3_uri_1 para identificar uma estrutura que contém as informações que identificam o arquivo do Amazon S3. Use a função aws_commons.create_s3_uri para criar a estrutura.

psql=> SELECT aws_commons.create_s3_uri( 'amzn-s3-demo-bucket', 'sample-filepath', 'us-west-2' ) AS s3_uri_1 \gset

Embora os parâmetros variem para as duas chamadas de função aws_s3.query_export_to_s3 a seguir, os resultados são os mesmos para esses exemplos. Todas as linhas da tabela sample_table são exportadas para um bucket chamado amzn-s3-demo-bucket.

psql=> SELECT * FROM aws_s3.query_export_to_s3('SELECT * FROM sample_table', :'s3_uri_1'); psql=> SELECT * FROM aws_s3.query_export_to_s3('SELECT * FROM sample_table', :'s3_uri_1', options :='format text');

Os parâmetros são descritos da seguinte forma:

  • 'SELECT * FROM sample_table' – o primeiro parâmetro é uma string de texto necessária que contém uma consulta SQL. O mecanismo PostgreSQL executa essa consulta. Os resultados da consulta são copiados no bucket do S3 identificado em outros parâmetros.

  • :'s3_uri_1' – esse parâmetro é uma estrutura que identifica o arquivo do Amazon S3. Esse exemplo usa uma variável para identificar a estrutura criada anteriormente. Em vez disso, você pode criar a estrutura incluindo a chamada de função aws_commons.create_s3_uri em linha dentro da chamada de função aws_s3.query_export_to_s3 da seguinte forma.

    SELECT * from aws_s3.query_export_to_s3('select * from sample_table', aws_commons.create_s3_uri('amzn-s3-demo-bucket', 'sample-filepath', 'us-west-2') );
  • options :='format text' – o parâmetro options é uma string de texto opcional que contém argumentos COPY do PostgreSQL. O processo de cópia usa os argumentos e o formato do comando COPY PostgreSQL.

Se o arquivo especificado não existir no bucket do Amazon S3, ele será criado. Se o arquivo já existir, ele será substituído. A sintaxe para acessar os dados exportados no Amazon S3 é a seguinte.

s3-region://bucket-name[/path-prefix]/file-prefix

Exportações maiores são armazenadas em vários arquivos, cada um com um tamanho máximo de aproximadamente 6 GB. Os nomes de arquivos adicionais têm o mesmo prefixo de arquivo, mas com o acréscimo de _partXX. O XX representa 2, depois 3 e assim por diante. Por exemplo, suponha que você especifique o caminho onde armazena arquivos de dados como o seguinte.

s3-us-west-2://amzn-s3-demo-bucket/my-prefix

Se a exportação precisar criar três arquivos de dados, o bucket do Amazon S3 conterá os seguintes arquivos de dados.

s3-us-west-2://amzn-s3-demo-bucket/my-prefix s3-us-west-2://amzn-s3-demo-bucket/my-prefix_part2 s3-us-west-2://amzn-s3-demo-bucket/my-prefix_part3

Para obter a referência completa para esta função e as formas adicionais de chamá-la, consulte aws_s3.query_export_to_s3. Para obter mais informações sobre como acessar arquivos no Amazon S3, consulte Visualização de um objeto no Guia do usuário do Amazon Simple Storage Service.

Exportar para um arquivo CSV que usa um delimitador personalizado

O exemplo a seguir mostra como chamar a função aws_s3.query_export_to_s3 para exportar dados para um arquivo que usa um delimitador personalizado. O exemplo usa argumentos do comando COPY do PostgreSQL para especificar o formato de valor separado por vírgula (CSV) e um delimitador de dois pontos (:).

SELECT * from aws_s3.query_export_to_s3('select * from basic_test', :'s3_uri_1', options :='format csv, delimiter $$:$$');

Exportar para um arquivo binário com codificação

O exemplo a seguir mostra como chamar a função aws_s3.query_export_to_s3 para exportar dados para um arquivo binário que tenha a codificação Windows-1253.

SELECT * from aws_s3.query_export_to_s3('select * from basic_test', :'s3_uri_1', options :='format binary, encoding WIN1253');