多くのフィールドを持つ SQL Server のテーブルがあります。そのうちの 2 つは IDNumber と Resolved(Date) Resolved で、SQL Server では Null です。次に、テーブルをインポートして更新したい IDNumber と Resolved(Date) を持つデータがあります。一致するIDNumberを見つけて、更新された解決日を入れてほしい。これどうやってするの?
ありがとう!
多くのフィールドを持つ SQL Server のテーブルがあります。そのうちの 2 つは IDNumber と Resolved(Date) Resolved で、SQL Server では Null です。次に、テーブルをインポートして更新したい IDNumber と Resolved(Date) を持つデータがあります。一致するIDNumberを見つけて、更新された解決日を入れてほしい。これどうやってするの?
ありがとう!
更新を行う場合、SSIS は一度に行を更新しますが、これにはかなりのコストがかかる可能性があります。ステージング テーブルを作成するには、SQL 実行タスクを使用することをお勧めします。
IF (OBJECT_ID(N'dbo.tmpIDNumberStaging') IS NOT NULL
DROP TABLE dbo.tmpIDNumberStaging;
CREATE TABLE dbo.tmpIDNumberStaging
( IDNumber INT NOT NULL,
Resoved DATE NOT NULL
);
次に、データ フロー タスクを使用してデータをこのテーブルにインポートします (ソースが何であるかはわかりませんが、宛先はOLE DB Destination
.宛先は実行時に作成されるため、Data" を宛先で false に設定します)。
最後に、このステージング テーブルを使用してメイン テーブルを更新します (ステージング テーブルを削除してクリーンアップします)。
UPDATE YourMainTable
SET Resolved = st.Resolved
FROM YourMainTable t
INNER JOIN dbo.tmpIDNumberStaging st
ON st.IDNumber = t.IDNumber
WHERE t.Resolved IS NULL;
-- CLEAN UP AND DROP STAGING TABLE
IF (OBJECT_ID(N'dbo.tmpIDNumberStaging') IS NOT NULL
DROP TABLE dbo.tmpIDNumberStaging;