

# 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\_ip\_address}} と {{port}} を、DNS 名または IP アドレス、セルフマネージド Db2 データベースのポート番号に置き換えます。

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

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

      ```
      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 DB インスタンスでテーブルを作成します。

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

      ```
      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 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\_username}} と {{master\_password}} を 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\_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}}"
   ```