

# Importar dados do Amazon S3 para uma instância de banco de dados do RDS para PostgreSQL
<a name="USER_PostgreSQL.S3Import.FileFormats"></a>

Importe dados do bucket do Amazon S3 usando a função `table_import_from_s3` da extensão aws\$1s3. Para obter informações de referência, consulte [aws\$1s3.table\$1import\$1from\$1s3](USER_PostgreSQL.S3Import.Reference.md#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](#USER_PostgreSQL.S3Import.FileFormats.CustomDelimiter).
+ `(format csv)` – 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) 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\$1commons.create\$1s3\$1uri](USER_PostgreSQL.S3Import.Reference.md#USER_PostgreSQL.S3Import.create_s3_uri) para criar uma estrutura `s3_uri`, consulte [Visão geral da importação de dados do Amazon S3](USER_PostgreSQL.S3Import.Overview.md).

Para ter mais informações sobre essa função, consulte [aws\$1s3.table\$1import\$1from\$1s3](USER_PostgreSQL.S3Import.Reference.md#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.

**Topics**
+ [Importar um arquivo do Amazon S3 que usa um delimitador personalizado](#USER_PostgreSQL.S3Import.FileFormats.CustomDelimiter)
+ [Importar um arquivo do Amazon S3 compactado (gzip)](#USER_PostgreSQL.S3Import.FileFormats.gzip)
+ [Importar um arquivo do Amazon S3 codificado](#USER_PostgreSQL.S3Import.FileFormats.Encoded)

## Importar um arquivo do Amazon S3 que usa um delimitador personalizado
<a name="USER_PostgreSQL.S3Import.FileFormats.CustomDelimiter"></a>

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\$1s3.table\$1import\$1from\$1s3](USER_PostgreSQL.S3Import.Reference.md#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);
   ```

1. Use o seguinte formato da função [aws\$1s3.table\$1import\$1from\$1s3](USER_PostgreSQL.S3Import.Reference.md#aws_s3.table_import_from_s3) para importar dados do arquivo do Amazon S3. 

   Você pode incluir a chamada de função [aws\$1commons.create\$1s3\$1uri](USER_PostgreSQL.S3Import.Reference.md#USER_PostgreSQL.S3Import.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)
<a name="USER_PostgreSQL.S3Import.FileFormats.gzip"></a>

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 Console de gerenciamento da AWS, 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 Console de gerenciamento da AWS, a AWS CLI ou a API, consulte [Carregar objetos](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html) 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)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-object-metadata.html) 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
<a name="USER_PostgreSQL.S3Import.FileFormats.Encoded"></a>

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')
);
```