MAS200 などの外部ソースから、本番 SQL Server 2005/2008 データベースへのデータ インポートを設計しています。ソースはトランザクション データベースであり、安全/分離されます。定期的なデータ同期が期待されるように、データベースをソースと同期させる必要があります。
CSV、txt ファイルの形式など、任意のタイプのソース データを要求する自由が与えられています。また、同様の構造を持つ別の SQL データベースにソース データを含めることもできます。データをインポートする最善の方法を選択する必要があります。それは定期的で、時間単位または日単位で行われる可能性があります。
私の経験に基づいて、SQL データベースにソース データを用意することが、開始するための最良の方法であると考えています。これまでに導き出した大まかな設計は次のとおりです -
- 定期的にソース データベースが外部から読み込まれます (私たちの側ではありません)。
- 前処理: ソース テーブル データを洗練する (つまり、トリム、ルックアップ) - 一般的なデータの書式設定と変換
- Fetch : レコードをループする CURSOR を作成します。既存のデータを更新して新しいものを挿入する予定なので、少なくとも 2 つの CURSOR ループが 1 つずつ必要になります。
- Populate : CURSORループ内でレコードが更新/挿入されます
- 後処理: ここでもいくつかの最終調整とルックアップ マッピング (つまり、コードを ID に置き換えます)
- Check : 最後に、テーブルの一貫性チェックを実行して、インポートされたデータの整合性を確認します
要約すると、ストアド プロシージャの手順を分割し、それらの手順を 1 つずつ実行する SQL ジョブを作成します。これを行うには、SSIS、データ インポート ウィザードなど、さまざまな方法があることを知っています。
注: データは膨大になります。前回同様のセットアップを行ったときは、データ インポート プロセス全体を完了するのに数分 (約 20 ~ 25 分) かかったので、1 時間ごとのデータ インポートをスケジュールしました。
ありがとうございました。
更新 #1: MERGE コマンドを使用するのが最善と思われることを理解しています。しかし、SQL Server 2005 用に作成しなければならない場合は? 2008年以降は動くと思います。リンクを見つけました -
http://sqlserver-tips.blogspot.com/2006/09/mimicing-merge-statement-in-sql.html
2005 年のその他のアイデアはありますか?