データベースに、毎月更新されるアイテムのコストを含むテーブルがあります。これらのコストを更新するために、誰かがテーブルをエクスポートし、Excelで魔法をかけ、テーブルをデータベースにインポートして戻します。 MSSQL 2005を実行しており、組み込みのSQL ManagementStudioを使用しています。問題は、テーブルにインポートし直すときに、インポートする前にすべてのレコードを削除する必要があることです。そうしないと、エラーが発生します。理想的な状況は、インポートが主キーを認識してから、重複キーを使用して2番目のレコードを作成しようとするのではなく、レコードを更新してインポートを停止することです。私たちが取得しようとしている動作の最良の例は、 http://sqlmanager.net/en/products/mssql/dataimport/documentation/hs2180.html 更新または挿入の例にあります。組み込みのツールでこのようなことが可能ですか、それともそれを実現するためにサードパーティのソフトウェアを入手する必要がありますか?
SQL Server 2008では、データを新しいテーブルに配置し、既存のテーブルをターゲットとして、新しいテーブルをソースとしてMERGEステートメントを使用できます。
代わりに、それを新しいテーブルに配置し、それを古い方法でソースとして使用することをお勧めします(残念ながら2つの手順を使用します)。
UPDATE t SET col1 = s.col1, col2 = s.col2
FROM targetTable t
JOIN
newTable s
ON s.id = t.id ;
INSERT targetTable (columnlist)
SELECT s.col1, s.col2, ...
FROM sourceTable s
LEFT JOIN
targetTable t
ON s.id = t.id
WHERE t.id IS NULL;
ID列にも挿入しようとしている場合は、ターゲットテーブルでIDENTITY_INSERTをオンにする必要がある場合があることに注意してください。