5

MySQLデータベースにすでに存在するデータをSQLServerデータベースに変換する必要があります。

ここでの注意点は、古いデータベースは適切に設計されていませんが、新しいデータベースは適切な3N形式であるということです。誰かがこれを行う方法について何かヒントがありますか?SSMS2005を使用しています。

  1. これを使用してMySQLDBに接続し、DTSを作成できますか?または、SSISを使用する必要がありますか?
  2. MySQL DBをスクリプト化し、すべてのステートメントを変更してSQL Server DBに「挿入」する必要がありますか?

誰かがこれを以前に経験したことがありますか?助けてください!!!

4

6 に答える 6

10

このリンクを参照してください。アイデアは、MySQLODBCドライバーを介してSQLServerのリンクサーバーとしてMySQLデータベースを追加することです。次に、SQL Serverへのデータのコピーなど、SSMSを介してMySQLデータベースで任意の操作を実行できます。

RDBMSの世界で上に移動しておめでとうございます!

于 2009-12-02T20:12:55.257 に答える
5

SSISは、この種のことを行うように設計されています。最初のステップは、各データが新しい構造のどこに配置されるかを手動でマップすることです。したがって、古いテーブルには4つのフィールドがあり、新しい構造ではfileds1と2がテーブルaに移動し、フィールド3と4がテーブルbに移動しますが、テーブルaから自動生成されたIDも必要です。データタイプが変更された場所、調整が必要な場合がある場所、または以前はデータが必要でなかったファイルが必要な場所などをメモします。

私が通常行うことは、ステージングテーブルを作成することです。非正規化された形式のデータを1つのステージングテーブルに配置してから、正規化されたステージングテーブルに移動し、そこでクリーンアップを実行して、ステージングテーブルに新しいIDが追加されたらすぐに追加します。非正規化データベースから正規化データベースに移行する場合に必要なことの1つは、実際の本番テーブルに挿入する前に、親テーブルから重複を削除する必要があることです。また、新しい構造に必要なファイルがあり、古いデータベースでは必要なかったファイルや、より適切なデータ型に移行したためにデータ変換の問題が発生する可能性があるため、データのクリーンアップが必要になる場合があります(たとえば、古いデータベースのvarcharフィールドに日付を保存した場合など)。新しいデータベースの日時に適切に移動すると、有効な日付を持たないレコードがいくつかある可能性があります。

考慮する必要があるもう1つの問題は、古いレコードIDから新しいレコードIDにどのように変換するかです。

これは簡単な作業ではありませんが、時間をかけて整然と作業すれば実行できます。今はショートカットを試す時ではありません。

于 2009-12-02T20:23:36.937 に答える
0

SSMSでデータベースに移動して右クリックすると、[タスク]の下に[データのインポート]のオプションが表示されます。あなたはそれを使ってみることができます。基本的には、SSISパッケージを作成するウィザードであり、SSISパッケージを自動的に実行するか、保存して必要に応じて変更することができます。

大きな問題は、データをどのように変換する必要があるかです。これは、あなたが含めない多くの詳細に入ります(そして、とにかくここに含めるには多分多すぎます)。

SSISは、古い形式から新しい形式に変更するために必要な変換をすべて処理できると確信しています。ただし、別の方法として、テーブルをそのままMS SQLにインポートしてステージングテーブルに入れ、SQLコードを使用してデータを3NFテーブルに変換することもできます。それはすべてあなたが最も快適であるかどうかの問題です。2番目のルートを使用する場合は、SSMSで前述したインポートプロセスを使用できます。宛先テーブルも作成されます。必ず一意の名前を付けてください。接頭辞として「STG_」などを付けてください。

Davudはリンクされたサーバーについて言及しました。それは間違いなくあなたが行くことができる(そして私の賛成を得た)別の方法です。個人的には、最初にテーブルをMS SQLにコピーすることを好みます。これは、リンクされたサーバーが、特に異なるプロバイダー間でマッピングされないデータ型に関しては、奇妙な場合があるためです。すべてのテーブルをMSSQLに含めると、データの一部を再実行または修正する必要がある場合でも、おそらく少し速くなり、時間を節約できます。私が言ったように、リンクサーバー方式もおそらく問題ないでしょう。

于 2009-12-02T20:18:38.227 に答える
0

必要なのはETL(抽出、変換、読み込み)ツールです。

http://en.wikipedia.org/wiki/Extract,_transform,_load#Tools

于 2009-12-02T20:10:05.560 に答える
0

元のデータベース設計と新しいデータベース設計に応じて、「ETL」ツールがどこまで到達できるかはわかりません。私のキャリアでは、数回以上のデータ移行を行う必要があり、通常、古いデータベースのレコードで新しいデータベースを更新する特別なユーティリティを設計する必要がありました。はい、すべての更新/挿入で完全にコーディングしました。データを変換するステートメント。

データベースにテーブルがいくつあるかはわかりませんが、テーブルが多すぎない場合は、うなり声を上げることを検討できます。これは、結局のところ確実に機能する1つの手法です。

于 2009-12-02T20:12:26.360 に答える
0

私はこれを別の方向に進めましたが、SSISは正常に機能しますが、わずかなデータ型の奇妙さを処理するためにスクリプトタスクを使用する必要があったかもしれません。 SSISはETLを実行します。

于 2009-12-02T20:14:34.390 に答える