

# 使用 INSERT 命令将数据从 Db2 导入到 Amazon RDS for Db2
<a name="db2-native-db2-tools-insert"></a>

您可以从自行管理的 Db2 服务器使用 `INSERT` 命令将您的数据插入到 Amazon RDS for Db2 数据库中。使用这种迁移方法，您可以为远程 RDS for Db2 数据库实例使用昵称。自行管理的 Db2 数据库（源）必须能够连接到 RDS for Db2 数据库（目标）。

**重要**  
`INSERT` 命令方法对于迁移小型表很有用。如果自行管理的 Db2 数据库和 RDS for Db2 数据库之间的网络带宽有限，我们建议您使用不同的迁移方法。有关更多信息，请参阅 [使用原生 Db2 工具将数据从 Db2 迁移到 Amazon RDS for Db2](db2-native-db2-tools.md)。

**将数据从自行管理的 Db2 数据库复制到 RDS for Db2 数据库**

1. 在自行管理的 Db2 实例上对 RDS for Db2 数据库实例进行编目。

   1. 对节点进行编目。在以下示例中，将 {{dns\_ip\_address}} 和 {{port}} 替换为自行管理的 Db2 数据库的 DNS 名称或 IP 地址和端口号。

      ```
      db2 catalog tcpip node remnode REMOTE {{dns_ip_address}} SERVER {{port}}
      ```

   1. 对数据库编目。在以下示例中，将 {{rds\_database\_name}} 替换为 RDS for Db2 数据库实例上的数据库名称。

      ```
      db2 catalog database {{rds_database_name}} as remdb at node remnode \
          authentication server_encrypt
      ```

1. 在自行管理的 Db2 实例上启用联合身份验证。在以下示例中，将 {{source\_database\_name}} 替换为自行管理的 Db2 实例上的数据库名称。

   ```
   db2 update dbm cfg using FEDERATED YES {{source_database_name}}
   ```

1. 在 RDS for Db2 数据库实例创建表。

   1. 对节点进行编目。在以下示例中，将 {{dns\_ip\_address}} 和 {{port}} 替换为自行管理的 Db2 数据库的 DNS 名称或 IP 地址和端口号。

      ```
      db2 catalog tcpip node srcnode REMOTE {{dns_ip_address}} server {{port}}
      ```

   1. 对数据库编目。在以下示例中，将 {{source\_database\_name}} 和 {{source\_database\_alias}} 替换为自行管理的 Db2 数据库的名称和要用于此数据库的别名。

      ```
      db2 catalog database {{source_database_name}} as {{source_database_alias}} at node srcnode \
          authentication server_encrypt
      ```

1. 连接到源数据库。在以下示例中，将 {{source\_database\_alias}}、{{user\_id}} 和 {{user\_password}} 替换为您在上一步中创建的别名以及自行管理的 Db2 数据库的用户 ID 和密码。

   ```
   db2look -d {{source_database_alias}} -i {{user_id}} -w {{user_password}} -e -l -a -f -wlm \
       -cor -createdb -printdbcfg -o db2look.sql
   ```

1. 设置联合身份验证，并在自行管理的 Db2 实例上为 RDS for Db2 数据库表创建昵称。

   1. 连接到本地数据库 在以下示例中，将 {{source\_database\_name}} 替换为自行管理的 Db2 实例上的数据库名称。

      ```
      db2 connect to {{source_database_name}}
      ```

   1.  创建用于访问 Db2 数据来源的包装器。

      ```
      db2 create wrapper drda
      ```

   1. 在联合数据库上定义数据来源。在以下示例中，将 {{admin}} 和 {{admin\_password}} 替换为自行管理的 Db2 实例的凭证。将 {{rds\_database\_name}} 替换为 RDS for Db2 数据库实例上的数据库名称。

      ```
      db2 "create server rdsdb2 type DB2/LUW version '11.5.9.0' \
          wrapper drda authorization "{{admin}}" password "{{admin_password}}" \
          options( dbname '{{rds_database_name}}', node 'remnode')"
      ```

   1. 映射两个数据库上的用户。在以下示例中，将 {{master\_username}} 和 {{master\_password}} 替换为 RDS for Db2 数据库实例的凭证。

      ```
      db2 "create user mapping for user server rdsdb2 \
          options (REMOTE_AUTHID '{{master_username}}', REMOTE_PASSWORD '{{master_password}}')"
      ```

   1. 验证与 RDS for Db2 服务器的连接。

      ```
      db2 set passthru rdsdb2
      ```

   1. 在远程 RDS for Db2 数据库中为该表创建昵称。在以下示例中，将 {{NICKNAME}} 和 {{TABLE\_NAME}} 替换为表的昵称和表的名称。

      ```
      db2 create nickname REMOTE.{{NICKNAME}} for RDSDB2.{{TABLE_NAME.{{NICKNAME}}}}
      ```

1. 将数据插入远程 RDS for Db2 数据库的表中。在自行管理的 Db2 实例的本地表上的 `select` 语句中使用该昵称。在以下示例中，将 {{NICKNAME}} 和 {{TABLE\_NAME}} 替换为表的昵称和表的名称。

   ```
   db2 "INSERT into REMOTE.{{NICKNAME}} select * from RDS2DB2.{{TABLE_NAME.NICKNAME}}"
   ```