

# aws\$1s3.query\$1export\$1to\$1s3 関数を使用したクエリデータのエクスポート
<a name="postgresql-s3-export-examples"></a>

[aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3) 関数を呼び出して、PostgreSQL データを Amazon S3 にエクスポートします。

**Topics**
+ [前提条件](#postgresql-s3-export-examples-prerequisites)
+ [aws\$1s3.query\$1export\$1to\$1s3 の呼び出し](#postgresql-s3-export-examples-basic)
+ [カスタム区切り文字を使用する CSV ファイルへのエクスポート](#postgresql-s3-export-examples-custom-delimiter)
+ [エンコードを使用したバイナリファイルへのエクスポート](#postgresql-s3-export-examples-encoded)

## 前提条件
<a name="postgresql-s3-export-examples-prerequisites"></a>

`aws_s3.query_export_to_s3` 関数を使用する前に、以下の前提条件を満たしていることを確認してください。
+ 「[Amazon S3 へのデータのエクスポートの概要](postgresql-s3-export.md#postgresql-s3-export-overview)」の説明に従って、必要な PostgreSQL エクステンションをインストールします。
+ 「[エクスポート先の Amazon S3 ファイルパスを指定する](postgresql-s3-export.md#postgresql-s3-export-file)。」の説明に従って、データの Amazon S3 のエクスポート先を決定します。
+ 「[Amazon S3 バケットへのアクセスを設定する](postgresql-s3-export-access-bucket.md)」の説明にとおり、DB インスタンスが Amazon S3 へのエクスポートアクセス権があることを確認します。

次の例では、`sample_table` というデータベーステーブルを使用しています。次の例では、データを *amzn-s3-demo-bucket* というバケットにエクスポートします。サンプルのテーブルとデータは、psql で次の SQL ステートメントを使用して作成されます。

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

## aws\$1s3.query\$1export\$1to\$1s3 の呼び出し
<a name="postgresql-s3-export-examples-basic"></a>

次に、 [aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3) 関数を呼び出す基本的な方法を示します。

これらの例では、可変 `s3_uri_1` を使用して、Amazon S3 ファイルを識別する情報を含む構造を指定しています。[aws\$1commons.create\$1s3\$1uri](postgresql-s3-export-functions.md#aws_commons.create_s3_uri) 関数を使用して構造を作成します。

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

以下の 2 つの `aws_s3.query_export_to_s3` 関数呼び出しのパラメータは異なりますが、これらの例の結果は同じです。`sample_table` テーブルのすべての行が *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');
```

パラメータの説明は次のとおりです。
+ `'SELECT * FROM sample_table'` - 初期のパラメータは、SQL クエリを含む必須のテキスト文字列です。PostgreSQL エンジンはこのクエリを実行します。クエリの結果は、他のパラメータで指定された S3 バケットにコピーされます。
+ `:'s3_uri_1'` - このパラメータは、Amazon S3 ファイルを識別する構造です。この例では、可変を使用して、前に作成した構造を指定します。代わりに、以下のように `aws_commons.create_s3_uri` 関数呼び出し内にインラインで `aws_s3.query_export_to_s3` 関数呼び出しを含めることで、同じ構造を作成できます。

  ```
  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'` - `options` パラメータは、PostgreSQL `COPY` 引数を含むオプションのテキスト文字列です。このコピープロセスでは、[PostgreSQL COPY](https://www.postgresql.org/docs/current/sql-copy.html) コマンドの引数と形式を使用します。

指定したファイルが Amazon S3 バケットに存在しない場合は、作成されます。このファイルが存在している場合は、上書きされます。Amazon S3 でエクスポートされたデータにアクセスするための構文は次のとおりです。

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

より大きなエクスポートは複数のファイルに格納され、それぞれの最大サイズは約 6 GB です。追加のファイル名には、同じファイルプレフィックスが付いていますが、末尾に `_partXX` が付加されます。`XX` は、2、3 などを表します。例えば、次のようにデータファイルを格納するパスを指定するとします。

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

エクスポートで 3 つのデータファイルを作成する必要がある場合、Amazon S3 バケットには次のデータファイルが含まれます。

```
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
```

この関数の完全なリファレンスと、それを呼び出すその他の方法については、「[aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3)」を参照してください。Amazon S3 でファイルにアクセスする方法の詳細については、*Amazon Simple Storage Service ユーザーガイド*の「[View an object](https://docs.aws.amazon.com/AmazonS3/latest/userguide/OpeningAnObject.html)」を参照してください。

## カスタム区切り文字を使用する CSV ファイルへのエクスポート
<a name="postgresql-s3-export-examples-custom-delimiter"></a>

次の例は、[aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3) 関数を呼び出して、カスタム区切り文字を使用するファイルにデータをエクスポートする方法を示しています。この例では、[PostgreSQL COPY](https://www.postgresql.org/docs/current/sql-copy.html) コマンドの引数を使用して、カンマ区切り値 (CSV) 形式とコロン (:) 区切り文字を指定します。

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

## エンコードを使用したバイナリファイルへのエクスポート
<a name="postgresql-s3-export-examples-encoded"></a>

次の例は、[aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3) 関数を呼び出して、Windows-1253 エンコーディングのバイナリファイルにデータをエクスポートする方法を示しています。

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