Amazon S3 から Amazon RDS for Db2 への Db2 データの移行
この移行アプローチでは、まず 1 つのテーブルから Amazon S3 バケットに配置するデータファイルにデータを保存します。次に、LOAD コマンド
Amazon S3 にデータを保存する
単一のテーブルから Amazon S3 にデータを保存するには、データベースユーティリティを使用して、データベース管理システム (DBMS) から CSV ファイルにデータを抽出します。次に、各ファイルを Amazon S3 にアップロードします。
Amazon S3 にデータファイルを保存するには、次の AWS コンポーネントが必要です。
-
バックアップファイルを保存する Amazon S3 バケット: S3 バケットが既にある場合は、そのバケットを使用できます。S3 バケットがない場合は、「Amazon S3 ユーザーガイド」の「バケットの作成」を参照してください。
-
S3 バケットにアクセスするための IAM ロール: IAM ロールが既にある場合は、そのロールを使用できます。ロールがない場合は、「ステップ 2: IAM ロールを作成して IAM ポリシーをアタッチする」を参照してください。
-
IAM ロールにアタッチされた信頼関係とアクセス許可を持つ IAM ポリシー: 詳細については、「ステップ 1: IAM ポリシーを作成する」を参照してください。
-
RDS for Db2 DB インスタンスに追加された IAM ロール: 詳細については、「ステップ 3: RDS for Db2 DB インスタンスに IAM ロールを追加する」を参照してください。
RDS for Db2 テーブルへのデータのロード
データファイルを Amazon S3 に保存した後、これらのファイルから RDS for Db2 DB インスタンスの個々のテーブルにデータをロードできます。
Db2 テーブルデータを RDS for Db2 DB データベーステーブルにロードするには
-
RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、
rdsadmin
データベースに接続します。次の例で、master_username
とmaster_password
を自分の情報に置き換えます。db2 connect to rdsadmin user
master_username
usingmaster_password
-
保存したファイルが保存されている Amazon S3 バケットを指すストレージアクセスエイリアスをカタログ化します。次のステップで使用するこのエイリアスの名前を書き留めます。同じ Amazon S3 バケットに保存されているデータファイルから複数のテーブルをロードする予定の場合、このステップを 1 回だけ実行する必要があります。
次の例では、
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」を参照してください。
-
Amazon S3 バケットを指すストレージアクセスエイリアスを使用して、
LOAD
コマンドを実行します。注記
LOAD
コマンドがエラーを返す場合は、Amazon S3 の VPC ゲートウェイエンドポイントを作成し、セキュリティグループにアウトバウンドルールを追加する必要がある場合があります。詳細については、「ファイル I/O エラー」を参照してください。次の例では、
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 intomy_db2_table
";次の例では、
my_table1_export.ixf
という名前のデータファイルからmy_db2_table
という名前のテーブルに LOB をロードします。この例では、データファイルが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 コマンド」を参照してください。