

# 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)에 설명된 대로 Amazon S3에 대한 내보내기 액세스 권한이 DB 클러스터 에 있는지 확인합니다.

다음 예제에서는 `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
```

파라미터가 다음 두 `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
```

내보내는 데이터가 클 경우 각각 최대 크기가 약 6GB인 여러 파일에 저장됩니다. 추가 파일 이름의 파일 접두사도 동일하지만 `_partXX`가 추가됩니다. `XX`는 2, 3 등을 나타냅니다. 예를 들어 데이터 파일을 저장하는 경로를 다음과 같이 지정한다고 가정합니다.

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

내보내기 시 세 개의 데이터 파일을 만들어야 하는 경우 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 사용 설명서*의 [객체 보기](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');
```