1

多くのフィールドを持つ SQL Server のテーブルがあります。そのうちの 2 つは IDNumber と Resolved(Date) Resolved で、SQL Server では Null です。次に、テーブルをインポートして更新したい IDNumber と Resolved(Date) を持つデータがあります。一致するIDNumberを見つけて、更新された解決日を入れてほしい。これどうやってするの?

ありがとう!

4

1 に答える 1

9

更新を行う場合、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;
于 2013-06-14T16:46:46.767 に答える