2011-10-20 23 views
2

私は、AccessからSQL Server 2008にデータをインポートするアプリケーションを開発中です。現在、ストアドプロシージャを使用してレコードごとにデータをインポートしています。データが2つの関連するテーブルに挿入されているため、一括挿入などでは行けません...アカウントテーブル(名、姓など)と3つのフィールドに入るフィールドがたくさんありますそれぞれがストアドプロシージャのSCOPE_IDENTITYで選択された自動インクリメントAccountIDによってAccountテーブルにリンクされたInsuranceテーブルのレコードを持ちます。ステージングテーブルから複数の関連テーブルにデータを挿入しますか?

アプリケーションからデータベースへの往復回数が多いため、パフォーマンスはあまり良くありません。これといくつかの他の理由から、私はステージングテーブルを使用してそこからデータをインポートすることを計画しています。これに近づくために私のオプションを読んで、ステージングテーブルのデータに同じインサートストアドプロシージャを実行するカーソルが意味をなさないでしょう。しかし、カーソルは悪の化身であり、避けるべきであると思われる。

1つのテーブルにデータを挿入し、自動生成されたIDを取得し、対応するIDを使用して同じレコードのデータをセットベースの操作で挿入する方法はありますか?またはカーソルは私のここの唯一のオプションですか?

+1

SQL Server 2008では、「merge ... output」を使用できます。この質問を見てください。 http://stackoverflow.com/questions/5365629/using-merge-output-to-get-mapping-between-source-id-and-target-id –

+2

BUlkステージングテーブルに挿入します。その後、MERGEとOUTPUTを使用します。 – HLGEM

答えて

3

OUTPUT節を見てください。あなたはあなたが望むことをするためにあなたのINSERTステートメントにそれを加えることができるはずです。

2番目のテーブルに最初のテーブルに挿入されていない列を出力する必要がある場合は、INSERTの代わりにMERGEを使用します(元の質問のコメントに示されているように)ソース表からの列。それ以外の場合は、INSERTでそれを保持する方が簡単です。挿入されたID列にアクセスできます。

1

私は、データバインディングを使用して関連するテーブルに複数のレコードを挿入する際の実験を行っています。だから、これを試してみてください!

うまくいけば、これは非常に役に立ちます。このリンクHow to insert record into related tablesに従ってください。詳細については。

+0

このリンクは無効です。 – Kapocsi

関連する問題