

# Exportar dados de consulta usando a função aws\$1s3.query\$1export\$1to\$1s3


Exporte os dados do PostgreSQL para o Amazon S3 chamando a função [aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3). 

**Topics**
+ [

## Pré-requisitos
](#postgresql-s3-export-examples-prerequisites)
+ [

## Chamar aws\$1s3.query\$1export\$1to\$1s3
](#postgresql-s3-export-examples-basic)
+ [

## Exportar para um arquivo CSV que usa um delimitador personalizado
](#postgresql-s3-export-examples-custom-delimiter)
+ [

## Exportar para um arquivo binário com codificação
](#postgresql-s3-export-examples-encoded)

## Pré-requisitos


Antes de usar a função `aws_s3.query_export_to_s3`, verifique se você concluiu os seguintes pré-requisitos:
+ Instalar as extensões do PostgreSQL necessárias, conforme descrito em [Visão geral da exportação de dados para o Amazon S3](postgresql-s3-export.md#postgresql-s3-export-overview).
+ Determinar para onde exportar os dados para o Amazon S3, conforme descrito em [Especificar o caminho do arquivo do Amazon S3 para o qual exportar](postgresql-s3-export.md#postgresql-s3-export-file).
+ Verifique se o cluster de banco de dados tem acesso ao Amazon S3 conforme descrito em [Configurar o acesso a um bucket do Amazon S3](postgresql-s3-export-access-bucket.md).

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\$1s3.query\$1export\$1to\$1s3


Veja a seguir as formas básicas de chamar a função [aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_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\$1commons.create\$1s3\$1uri](postgresql-s3-export-functions.md#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](https://www.postgresql.org/docs/current/sql-copy.html). 

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\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3). Para obter mais informações sobre como acessar arquivos no Amazon S3, consulte [Visualização de um objeto](https://docs.aws.amazon.com/AmazonS3/latest/userguide/OpeningAnObject.html) 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\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3) para exportar dados para um arquivo que usa um delimitador personalizado. O exemplo usa argumentos do comando [COPY do PostgreSQL](https://www.postgresql.org/docs/current/sql-copy.html) 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\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_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');
```