我有一个SQL Server 2K8与less数表填充预定义的数据中的几列。 预定义数据由第三方定期发布为MDB / XLS / CSV文件。 我需要将这些更新应用到表中的相应列。 一个简单的例子是使用城市,州和邮政的表格,这些表格使用来自第三方的数据填充。
要定期更新表,我想通过确定增量和只更新增量更新。 我想写一个Windows应用程序来做到这一点。
SQL Server中是否有任何工具允许我执行两个表之间的增量,只更新目标上的增量? SSIS是否有帮助?
谢谢阅读!
是! SQL 2008精确地介绍了合并命令。
Technet MERGE(Transact-SQL)
这里是上面的文章的一个例子:
USE AdventureWorks; GO -- Create a temporary table variable to hold the output actions. DECLARE @SummaryOfChanges TABLE(Change VARCHAR(20)); MERGE INTO Sales.SalesReason AS Target USING (VALUES ('Recommendation','Other'), ('Review', 'Marketing'), ('Internet', 'Promotion')) AS Source (NewName, NewReasonType) ON Target.Name = Source.NewName WHEN MATCHED THEN UPDATE SET ReasonType = Source.NewReasonType WHEN NOT MATCHED BY TARGET THEN INSERT (Name, ReasonType) VALUES (NewName, NewReasonType) OUTPUT $action INTO @SummaryOfChanges; -- Query the results of the table variable. SELECT Change, COUNT(*) AS CountPerChange FROM @SummaryOfChanges GROUP BY Change;
如果您不希望插入源自您的外部来源的logging,并且不在您的内部数据中,请删除:
WHEN NOT MATCHED BY TARGET THEN INSERT (Name, ReasonType) VALUES (NewName, NewReasonType)