- - PR -
DB2 データベース移行方法に関する質問
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2005-01-20 17:30
お世話になります。
DB2の開発経験がほとんどなく 調査、実験では思うような結果が 得られないためこちらで質問させてください。 テーブル定義の変更に伴い、 変更後のテーブルが作られている新DBへ データの移行が必要となりました。 環境 OS:Linux DB:DB2 v8.1 上記作業における検討中の方針を記述します。 @アプリケーションのコード内部に スキーマ名(A_schemaとする)が固定で書かれて いることから、スキーマ名を変更することが できないということでDBを別に作成する。(新DB) A旧DBよりdb2moveでスキーマ単位でテーブルデータを exportし新DBに別スキーマ名(B_schemaとする)でimportする。※1 Bテーブル定義の変更はSQLで吸収し、 「insert into B_schema.テーブル名 (a,b,c) select a,b,c from A_schema.テーブル名〜」 という形式でデータの移行を行う。 (変更されたテーブルは約60個あります。) そこで質問なのですが、※1でA_schemaのexportしたテーブルを B_schemaとしてimportする方法はないでしょうか。 上記が不可能な場合の対応方法、またはもっと効率の良い方法など ございましたらご教示頂けないでしょうか。 以上、宜しくお願い致します。 |
|
投稿日時: 2005-01-21 12:08
普通にスキーマ名を指定してimportコマンドを実行すれば問題ないと思いますが。 db2 "import from tab1.ixf of ixf replace into NEW_SCHEMA.TABNAME" あと別スキーマにテーブルを作成したいからといって特に新しくDBを作成する必要は無いと思いますよ。 次のように新しいスキーマでテーブルを作成できます。 db2 "create table NEW_SCHEMA.TABNAME like OLD_SCHEMA.TABNAME" |
|
投稿日時: 2005-01-21 13:42
ishi様
ご回答有難う御座います。 教えて頂いた方法で試してみようと思います。 >あと別スキーマにテーブルを作成したいからといって >特に新しくDBを作成する必要は無いと思いますよ。 説明が悪くて申し訳ありません。 スキーマ名を変更せずにテーブル定義を変更したいので 新しいDBを作成しなければいけないと思っています。 (定義変更前の状態も残しておきたい。) 単純にスキーマ名を変更する方法はないのでしょうか。 以上、宜しくお願い致します。 |
|
投稿日時: 2005-01-21 18:21
>単純にスキーマ名を変更する方法はないのでしょうか。
コマンド一発では無理だと思います。 RENAME でも ALTER TABLEでも出来ないようです。 スキーマ名ではなくテーブル名で管理するのは駄目ですか? こちらは簡単です。 db2 "rename table TABNAME to BACKUP_TABNAME" db2 "create TABNAME …" db2 "insert into TABNAME (…) select … from BACKUP_TABNAME" |
|
投稿日時: 2005-01-24 13:47
ishi様
ご連絡遅れまして申し訳ありません。 db2moveでExportした際作成される db2move.lstファイルのスキーマ部分を変更することにより ishi様から教えて頂いた下記の処理が複数テーブル分 まとめて出来ました。 db2 "import from tab1.ixf of ixf replace into NEW_SCHEMA.TABNAME" さまざまなアドバイス有難う御座いました。 |
1
