質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
DB2

DB2(IBM Database2)は、IBMのリレーショナルデータベース管理システム製品です。 UNIXとWindows、IBM社のメインフレームOS用が用意されており、 幅広いプラットフォームに対応しています。

Q&A

1回答

137閲覧

DB2でテーブル名をリネームした際のインデックスについて

enoeno

総合スコア21

DB2

DB2(IBM Database2)は、IBMのリレーショナルデータベース管理システム製品です。 UNIXとWindows、IBM社のメインフレームOS用が用意されており、 幅広いプラットフォームに対応しています。

0グッド

0クリップ

投稿2025/04/21 05:00

実現したいこと

現行テーブルにカラムを追加してデータ移行したいケースにおいて、

前提:
・現行テーブルTBLAにはインデックスがすでに数個作成されている

データ移行手順:

  1. カラムを追加した移行用テーブルTBLA_TEMPをcreate tableする
  2. 現行テーブルTBLAからデータをIXF形式でexport。その際、新規カラムのデフォルト値も含めておく('0' AS NEW_COLMNとか)
  3. エクスポートファイルを移行用テーブルTBLA_TEMPにloadする
  4. 現行テーブルをリネーム(TBLA→TBLA_OLD)
  5. 移行用テーブルを本物にリネーム(TBLA_TEMP→TBLA)

元々あったインデックスは5番の処理でリネームされた新テーブルにそのまま有効でしょうか?

発生している問題・分からないこと

インデックスはテーブル名に紐づけて定義するので、リネームした場合にどうなるのかによって移行方法を再検討したいです。

該当のソースコード

特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

情報は見つかりませんでした。周りの人間も知見がなさそうでした。

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

インデックスの定義はテーブルを指定して行うので、元となるテーブル名が変更になった場合に紐付けが外れる事は無いと思います。
手元にDB2はないので確認出来ていませんが、新たにテーブルを作るなどして簡単に確認出来ると思います。

旧(エクスポート)⇒新(インポート)しつつ、それぞれリネームするという事は、旧データベース⇒新データベースではなく、データベースは変わらないという事なら、敢えてファイルを介した処理にメリットがあるという事でしょうか

投稿2025/04/21 08:21

sazi

総合スコア25426

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

enoeno

2025/04/21 09:20

新テーブルにカラムを追加したいのです。ですのでこのような移行手順を考えました。 データ移行そのものはこれでいけると思ったのですが、既存のインデックスのことに気づいてしまいこのような質問となりました。 index1→TBLAという状態でTBLA→TBLA_OLDにリネームすると、index1はTBLA_OLDに紐づくということなのでしょうか?
enoeno

2025/04/21 09:47

すいません、そもそもload後にインデックスをcreateしようとしていました。 これだと作ったインデックスが全部空振りすることになり、公式ドキュメントを読んでシロート考えだと悟りました。 結局は移行前テーブルをまずdropするかインデックスを外してからでないと移行後テーブルにデータを突っ込めないということになるので、前提から見直さなければならないようです。 よって質問が意味をなさなくなりました。申し訳ありません。
sazi

2025/04/22 00:19

> 新テーブルにカラムを追加したいのです。 load後に追加すれば良いのでは? > そもそもload後にインデックスをcreateしようとしていました。 一般的には後で纏めて作成する方が高速です。 > 移行前テーブルをまずdropするかインデックスを外してからでないと移行後テーブルにデータを突っ込めない 意図するところが分かりません。何か勘違いをされているように思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問