

# 函数参考
<a name="postgresql-s3-export-functions"></a>

**Topics**
+ [aws\$1s3.query\$1export\$1to\$1s3](#aws_s3.export_query_to_s3)
+ [aws\$1commons.create\$1s3\$1uri](#aws_commons.create_s3_uri)

## aws\$1s3.query\$1export\$1to\$1s3
<a name="aws_s3.export_query_to_s3"></a>

将 PostgreSQL 查询结果导出到 Amazon S3 存储桶。`aws_s3` 扩展提供 `aws_s3.query_export_to_s3` 函数。

两个必需的参数为 `query` 和 `s3_info`。这两个参数定义了要导出的查询，并标识了要导出到的 Amazon S3 存储桶。一个称作 `options` 的可选参数，用于定义各种导出参数。有关使用 `aws_s3.query_export_to_s3` 函数的示例，请参阅[使用 aws\$1s3.query\$1export\$1to\$1s3 函数导出查询数据](postgresql-s3-export-examples.md)。

**语法**

```
aws_s3.query_export_to_s3(
    query text,    
    s3_info aws_commons._s3_uri_1,    
    options text,
    kms_key text
)
```输入参数

*query*()  
一个必需的文本字符串，其中包含 PostgreSQL 引擎运行的 SQL 查询。此查询的结果将复制到 `s3_info` 参数中标识的 S3 存储桶。

*s3\$1info*  
包含有关 S3 对象的以下信息的 `aws_commons._s3_uri_1` 复合类型：  
+ `bucket` – 要包含文件的 Amazon S3 存储桶的名称。
+ `file_path` – Amazon S3 文件名和路径。
+ `region` – 存储桶所在的AWS区域。有关 AWS 区域名称和关联值的列表，请参阅[区域、可用区和 Local Zones ](Concepts.RegionsAndAvailabilityZones.md)。

  目前，此值必须是导出的数据库实例的同一个 AWS 区域。默认值为导出的数据库实例的 AWS 区域。
要创建 `aws_commons._s3_uri_1` 复合结构，请参阅 [aws\$1commons.create\$1s3\$1uri](#aws_commons.create_s3_uri) 函数。

*options*  
一个包含 PostgreSQL `COPY` 命令的参数的可选文本字符串。这些参数指定了在导出时复制数据的方式。有关更多详细信息，请参阅 [PostgreSQL COPY 文档](https://www.postgresql.org/docs/current/sql-copy.html)。

*kms\$1key 文本*  
一个可选文本字符串，其中包含要将数据导出到的 S3 存储桶的客户托管 KMS 密钥。

### 备用输入参数
<a name="aws_s3.export_query_to_s3-alternate-parameters"></a>

为帮助进行测试，您可以使用一组扩展的参数而非 `s3_info` 参数。下面是 `aws_s3.query_export_to_s3` 函数的其他语法变化。

不使用 `s3_info` 参数来标识 Amazon S3 文件，而使用 `bucket`、`file_path` 和 `region` 参数的组合。

```
aws_s3.query_export_to_s3(
    query text,    
    bucket text,    
    file_path text,    
    region text,    
    options text,
    kms_key text
)
```

*query*()  
一个必需的文本字符串，其中包含 PostgreSQL 引擎运行的 SQL 查询。此查询的结果将复制到 `s3_info` 参数中标识的 S3 存储桶。

*bucket*  
一个包含 Amazon S3 存储桶（其中包含文件）的名称的必需文本字符串。

*file\$1path*  
包含 Amazon S3 文件名（包含文件路径）的必填文本字符串。

*region*  
一个包含存储桶所在的 AWS 区域的可选文本字符串。有关 AWS 区域名称和关联值的列表，请参阅[区域、可用区和 Local Zones ](Concepts.RegionsAndAvailabilityZones.md)。  
目前，此值必须是导出的数据库实例的同一个 AWS 区域。默认值为导出的数据库实例的 AWS 区域。

*options*  
一个包含 PostgreSQL `COPY` 命令的参数的可选文本字符串。这些参数指定了在导出时复制数据的方式。有关更多详细信息，请参阅 [PostgreSQL COPY 文档](https://www.postgresql.org/docs/current/sql-copy.html)。

*kms\$1key 文本*  
一个可选文本字符串，其中包含要将数据导出到的 S3 存储桶的客户托管 KMS 密钥。

### 输出参数
<a name="aws_s3.export_query_to_s3-output-parameters"></a>

```
aws_s3.query_export_to_s3(
    OUT rows_uploaded bigint,
    OUT files_uploaded bigint,
    OUT bytes_uploaded bigint
)
```

*rows\$1uploaded*  
针对给定查询成功上传到 Amazon S3 的表行的数目。

*files\$1uploaded*  
已上传到 Amazon S3 的文件的数目。以约 6 GB 的大小创建文件。创建的每个附加文件的名称都追加了 `_partXX`。根据需要，`XX` 表示 2，然后表示 3，依此类推。

*bytes\$1uploaded*  
已上传到 Amazon S3 的字节的总数。

### 示例
<a name="aws_s3.export_query_to_s3-examples"></a>

```
psql=> SELECT * from aws_s3.query_export_to_s3('select * from sample_table', 'amzn-s3-demo-bucket', 'sample-filepath');
psql=> SELECT * from aws_s3.query_export_to_s3('select * from sample_table', 'amzn-s3-demo-bucket', 'sample-filepath','us-west-2');
psql=> SELECT * from aws_s3.query_export_to_s3('select * from sample_table', 'amzn-s3-demo-bucket', 'sample-filepath','us-west-2','format text');
```

## aws\$1commons.create\$1s3\$1uri
<a name="aws_commons.create_s3_uri"></a>

创建 `aws_commons._s3_uri_1` 结构来保存 Amazon S3 文件信息。在 `aws_commons.create_s3_uri` 函数的 `s3_info` 参数中使用 [aws\$1s3.query\$1export\$1to\$1s3](#aws_s3.export_query_to_s3) 函数的结果。有关使用 `aws_commons.create_s3_uri` 函数的示例，请参阅[指定要导出到的 Amazon S3 文件路径](postgresql-s3-export.md#postgresql-s3-export-file)。

**语法**

```
aws_commons.create_s3_uri(
   bucket text,
   file_path text,
   region text
)
```输入参数

*bucket*  
包含文件的 Amazon S3 存储桶名称的必需文本字符串。

*file\$1path*  
包含 Amazon S3 文件名（包含文件路径）的必填文本字符串。

*region*  
一个包含文件所在的 AWS 区域的必需文本字符串。有关 AWS 区域名称和关联值的列表，请参阅[区域、可用区和 Local Zones ](Concepts.RegionsAndAvailabilityZones.md)。