

# INSERT コマンドを使用して Db2 から Amazon RDS for Db2 にデータをインポートする
<a name="db2-native-db2-tools-insert"></a>

`INSERT` コマンドを使用して、セルフマネージド Db2 サーバーから Amazon RDS for Db2 データベースにデータを挿入できます。この移行アプローチでは、リモート RDS for Db2 DB インスタンスのニックネームを使用します。セルフマネージド 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 DB インスタンスをカタログ化します。

   1. ノードをカタログ化します。次の例では、*dns\$1ip\$1address* と *port* を、DNS 名または IP アドレス、セルフマネージド Db2 データベースのポート番号に置き換えます。

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

   1. データベースをカタログ化します。次の例では、*rds\$1database\$1name* を RDS for Db2 DB インスタンスのデータベースの名前に置き換えます。

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

1. セルフマネージド Db2 インスタンスでフェデレーションを有効にします。次の例では、*source\$1database\$1name* をセルフマネージド Db2 インスタンスのデータベースの名前に置き換えます。

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

1. RDS for Db2 DB インスタンスでテーブルを作成します。

   1. ノードをカタログ化します。次の例では、*dns\$1ip\$1address* と *port* を、DNS 名または IP アドレス、セルフマネージド Db2 データベースのポート番号に置き換えます。

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

   1. データベースをカタログ化します。次の例では、*source\$1database\$1name* と *source\$1database\$1alias* を、セルフマネージド Db2 データベースの名前と、このデータベースに使用するエイリアスに置き換えます。

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

1. ソースデータベースにアタッチします。次の例では、*source\$1database\$1alias*、*user\$1id*、*user\$1password* を、前のステップで作成したエイリアスと、セルフマネージド 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\$1database\$1name* をセルフマネージド Db2 インスタンスのデータベースの名前に置き換えます。

      ```
      db2 connect to source_database_name
      ```

   1.  Db2 データソースにアクセスするためのラッパーを作成します。

      ```
      db2 create wrapper drda
      ```

   1. フェデレーションデータベースでデータソースを定義します。次の例では、*admin* と *admin\$1password* をセルフマネージド Db2 インスタンスの認証情報に置き換えます。*rds\$1database\$1name* を RDS for Db2 DB インスタンスのデータベースの名前に置き換えます。

      ```
      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. 2 つのデータベースのユーザーをマッピングします。次の例では、*master\$1username* と *master\$1password* を RDS for Db2 DB インスタンスの認証情報に置き換えます。

      ```
      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\$1NAME* をテーブルのニックネームとテーブルの名前に置き換えます。

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

1. リモート RDS for Db2 データベースのテーブルにデータを挿入します。セルフマネージド Db2 インスタンスのローカルテーブルの `select` ステートメントでニックネームを使用します。次の例では、*NICKNAME* と *TABLE\$1NAME* をテーブルのニックネームとテーブルの名前に置き換えます。

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