1

現在、レガシー データベースからの移行操作を実行しています。何百万もの元の行の移行を実行し、元のコンテンツを複数の宛先の親/子行に分割する必要があります。

単純な 1 対 1 の移行ではなく、結果の行は ID で生成されたキーに基づく親/子の行であるため、移行を実行するための最適なメカニズムは何ですか?

スクリプト コンテンツを生成する時点で子行の ID 値を決定できないため、一括挿入を使用できないと思いますか? 私が現在考えることができる唯一の解決策は、アイデンティティを明示的に設定し、インポートの開始点を事前に決定することです。

他の誰かから意見があれば、フィードバックをいただければ幸いです。

4

2 に答える 2

1

これは私の標準的なアプローチです:

  • 新しいデータ モデルを作成する
  • データを変更せずに新しい DB にプルする
  • 移行を実行するための SQL スクリプトを記述 (および実行) する
  • テスト
  • (オプション) レガシー データを含むテーブルを削除する

プレーン SQL を使用してデータを移行するには、長い道のりを歩むことができます。あなたが説明したケースでは、それを理解するために単一の Cursor を処理する必要はないかもしれません。

クエリ アナライザー (または dbms の類似物) でプロセスを実行すると、すべてをトランザクションにラップできるため、途中で問題が発生した場合にロールバックできるという利点があります。少しずつ書いて、開発データベースでチャンクでテストします。すべてが正常に機能したら、本番データベースでスクリプトを緩めます。

並べ替えました。

于 2008-10-30T12:06:51.853 に答える
0

提案していただきありがとうございますが、プログラムによるソリューションを作成したいと思います。私は現在 Nant / CruiseControl を使用してテストを自動化しており、現在のライブ レガシー コンテンツに基づいてオンザフライで再作成できるものが必要です。

于 2008-10-30T11:45:21.710 に答える