

# 通过 Amazon S3 将 Db2 数据迁移到 Amazon RDS for Db2
<a name="db2-migration-load-from-s3"></a>

通过这种迁移方法，您首先将单个表中的数据保存到您放入 Amazon S3 存储桶中的数据文件。然后，可以使用 [LOAD command](https://www.ibm.com/docs/en/db2/11.5?topic=commands-load) 将该数据文件中的数据加载到 Amazon RDS for Db2 数据库的表中。有关使用 Amazon S3 的更多信息，请参阅[将 Amazon RDS for Db2 数据库实例与 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 上存储数据文件，您需要以下 Amazon 组件：
+ *用于存储备份文件的 Amazon S3 存储桶*：如果您已有一个 S3 存储桶，则可以使用该存储桶。如果没有 S3 存储桶，请参阅《Amazon S3 用户指南》**中的[创建存储桶](https://docs.amazonaws.cn/AmazonS3/latest/userguide/create-bucket-overview.html)。
+ *访问 S3 存储桶的 IAM 角色*：如果已经有一个 IAM 角色，则可以使用该角色。如果您还没有角色，请参阅[步骤 2：创建 IAM 角色并附加您的 IAM policy](db2-s3-integration.md#db2-creating-iam-role)。
+ *一个 IAM 策略，其中包含附加到 IAM 角色的信任关系和权限*：有关更多信息，请参阅[步骤 1：创建 IAM policy](db2-s3-integration.md#db2-creating-iam-policy)。
+ *添加到 RDS for Db2 数据库实例的 IAM 角色*：有关更多信息，请参阅[步骤 3：将您的 IAM 角色添加到 RDS for Db2 数据库实例](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 数据库实例上的各个表中。

**将 Db2 表数据加载到 RDS for Db2 数据库表中**

1. 使用 RDS for Db2 数据库实例的主用户名和主密码连接到 `rdsadmin` 数据库。在以下示例中，用您自己的信息替换 *master\$1username* 和 *master\$1password*。

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

1. 对存储访问权限别名进行编目，该别名指向存储已保存文件的 Amazon S3 存储桶。记下该别名的名称，以供在下一个步骤中使用。如果您计划从存储在同一 Amazon S3 存储桶中的数据文件加载多个表，则只需执行一次此步骤。

   以下示例对名为 *my\$1s3\$1alias* 的别名进行编目，该别名向名为 *jorge\$1souza* 的用户授予访问名为 *amzn-s3-demo-bucket* 的存储桶的权限。

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

   有关此存储过程的更多信息，请参阅[rdsadmin.catalog\$1storage\$1access](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\$1s3\$1datafile.csv* 的数据文件中的数据加载到名为 *my\$1db2\$1table* 的表中。该示例假设数据文件位于名为 *my\$1s3\$1alias* 的别名所指向的 Amazon S3 存储桶中。

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

   以下示例将名为 *my\$1table1\$1export.ixf* 的数据文件中的 LOB 加载到名为 *my\$1db2\$1table* 的表中。该示例假设数据文件位于名为 *my\$1s3\$1alias* 的别名所指向的 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')"
   ```

   对 Amazon S3 存储桶中要加载到 RDS for Db2 数据库实例的表中的每个数据文件重复此步骤。

   有关 `LOAD` 命令的更多信息，请参阅 [LOAD command](https://www.ibm.com/docs/en/db2/11.5?topic=commands-load)。