

# Amazon S3를 통해 Amazon RDS for Db2로 Db2 데이터 마이그레이션
<a name="db2-migration-load-from-s3"></a>

이 마이그레이션 접근 방식을 사용하면 먼저 단일 테이블의 데이터를 데이터 파일에 저장하고 Amazon S3 버킷에 저장합니다. 그런 다음 [LOAD 명령](https://www.ibm.com/docs/en/db2/11.5?topic=commands-load)을 사용하여 해당 데이터 파일의 데이터를 Amazon RDS for Db2 데이터베이스의 테이블로 로드합니다. Amazon S3 사용에 대한 자세한 내용은 [Amazon RDS for Db2 DB 인스턴스와 Amazon S3 통합](db2-s3-integration.md) 섹션을 참조하세요.

**Topics**
+ [Amazon S3에 데이터 저장](#db2-migration-load-from-s3-saving-data-file)
+ [RDS for Db2 테이블에 데이터 로드](#db2-migration-load-from-s3-into-db-table)

## Amazon S3에 데이터 저장
<a name="db2-migration-load-from-s3-saving-data-file"></a>

단일 테이블의 데이터를 Amazon S3에 저장하려면 데이터베이스 유틸리티를 사용하여 데이터베이스 관리 시스템(DBMS)에서 CSV 파일로 데이터를 추출하세요. 그런 다음 각 파일을 Amazon S3에 업로드합니다.

Amazon S3에 데이터 파일을 저장하려면 다음 AWS 구성 요소가 필요합니다.
+ *백업 파일을 저장할 Amazon S3 버킷*: S3 버킷이 이미 있다면 해당 버킷을 사용할 수 있습니다. S3 버킷이 없는 경우 **Amazon S3 사용 설명서의 [버킷 생성](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)을 참조하세요.
+ **S3 버킷에 액세스하기 위한 IAM 역할: 이미 IAM 역할이 있다면 해당 역할을 사용할 수 있습니다. 역할이 없는 경우 [2단계: IAM 역할 생성 및 IAM 정책 연결](db2-s3-integration.md#db2-creating-iam-role) 섹션을 참조하세요.
+ **IAM 역할에 연결된 신뢰 관계 및 권한이 포함된 IAM 정책: 자세한 내용은 [1단계: IAM 정책 생성](db2-s3-integration.md#db2-creating-iam-policy) 섹션을 참조하세요.
+ **RDS for Db2 DB 인스턴스에 추가된 IAM 역할: 자세한 내용은 [3단계: RDS for Db2 DB 인스턴스에 IAM 역할 추가](db2-s3-integration.md#db2-adding-iam-role) 섹션을 참조하세요.

## RDS for Db2 테이블에 데이터 로드
<a name="db2-migration-load-from-s3-into-db-table"></a>

Amazon S3에 데이터 파일을 저장한 후 이러한 파일의 데이터를 RDS for Db2 DB 인스턴스의 개별 테이블로 로드할 수 있습니다.

**Db2 테이블 데이터를 RDS for Db2 DB 데이터베이스 테이블에 로드하려면**

1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 `rdsadmin` 데이터베이스에 연결합니다. 다음 예제에서 {{master\_username}} 및 {{master\_password}}를 사용자 자체 정보로 대체합니다.

   ```
   db2 connect to rdsadmin user {{master_username}} using {{master_password}}
   ```

1. 저장된 파일이 보관되는 Amazon S3 버킷으로 연결되는 스토리지 액세스 별칭을 카탈로그화합니다. 다음 단계에서 사용할 수 있도록 이 별칭의 이름을 적어 둡니다. 동일한 Amazon S3 버킷에 저장된 데이터 파일에서 여러 테이블을 로드하려는 경우 이 단계를 한 번만 수행하면 됩니다.

   다음 예제는 {{jorge\_souza}}라는 사용자에게 {{amzn-s3-demo-bucket}}이라는 이름의 버킷에 대한 액세스 권한을 부여하는 {{my\_s3\_alias}}라는 별칭을 카탈로그화합니다.

   ```
   db2 "call rdsadmin.catalog_storage_access(?, '{{my_s3_alias}}', '{{amzn-s3-demo-bucket}}', 'USER', '{{jorge_souza}}')"
   ```

   이 저장 절차에 대한 자세한 내용은 [rdsadmin.catalog\_storage\_access](db2-sp-managing-storage-access.md#db2-sp-catalog-storage-access) 단원을 참조하세요.

1. Amazon S3 버킷으로 연결되는 스토리지 액세스 별칭을 사용하여 `LOAD` 명령을 실행합니다.
**참고**  
`LOAD` 명령에서 오류가 반환되는 경우 Amazon S3용 VPC 게이트웨이 엔드포인트를 생성하고 보안 그룹에 아웃바운드 규칙을 추가해야 할 수 있습니다. 자세한 내용은 [파일 I/O 오류](db2-troubleshooting.md#db2-file-input-output-error) 섹션을 참조하세요.

   다음 예제에서는 {{my\_s3\_datafile.csv}}라는 데이터 파일의 데이터를 {{my\_db2\_table}}이라는 테이블로 로드합니다. 이 예제에서는 {{my\_s3\_alias}}라는 별칭이 연결된 Amazon S3 버킷에 데이터 파일이 있다고 가정합니다.

   ```
   db2 "load from db2remote://{{my_s3_alias}}//{{my_s3_datafile.csv}} of DEL insert into {{my_db2_table}}";
   ```

   다음 예제에서는 {{my\_table1\_export.ixf}}라는 데이터 파일의 LOB를 {{my\_db2\_table}}이라는 테이블로 로드합니다. 이 예제에서는 {{my\_s3\_alias}}라는 별칭이 연결된 Amazon S3 버킷에 데이터 파일이 있다고 가정합니다.

   ```
   db2 "call sysproc.admin_cmd('load from "db2remote://{{my_s3_alias}}//{{my_table1_export.ixf}}" of ixf
           lobs from "db2remote://{{my_s3_alias}}//" xml from "db2remote://{{my_s3_alias}}//"
           modified by lobsinfile implicitlyhiddeninclude identityoverride generatedoverride periodoverride transactionidoverride
           messages on server
           replace into "{{my_schema}}"."{{my_db2_table}}"
                                  nonrecoverable
           indexing mode incremental allow no access')"
   ```

   RDS for Db2 DB 인스턴스에서 테이블에 로드하려는 Amazon S3 버킷의 각 데이터 파일에 대해 이 단계를 반복합니다.

   `LOAD` 명령에 대한 자세한 내용은 [LOAD 명령](https://www.ibm.com/docs/en/db2/11.5?topic=commands-load)을 참조하세요.