我在 SQL Server 中有一个包含许多字段的表。其中两个是 IDNumber 和 Resolved(Date) Resolved is Null in SQL Server。然后我有我想要导入和更新表的 IDNumber 和 Resolved(Date) 数据。我希望它找到匹配的 IDNumber 并输入更新的解决日期。我怎样才能做到这一点?
谢谢!
我在 SQL Server 中有一个包含许多字段的表。其中两个是 IDNumber 和 Resolved(Date) Resolved is Null in SQL Server。然后我有我想要导入和更新表的 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
。您可能需要将数据流任务上的“延迟验证”设置为 false 和/或“验证外部元数据” 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;