我有一天一次的摄取案例,我将通过FTP获取一个包含4个数据库表的最新版本的大文件。
对于每张表,我想:
我确信这是一个相当普遍的问题,但我不能百分之百地确定接近它的最佳方法。
是否存在针对此类问题的内置T-SQL功能,或者我是否只需要进行各种连接以查找插入/更新/删除的记录并手动执行它们?我确信我可以通过第二种方式来做到这一点,但任何建议都非常受欢迎(不是寻找工作代码)。
答案 0 :(得分:1)
由于没有人把它作为一个真正的答案,Mikael Eriksson在评论中提到的MERGE命令是正确的方法,它运作良好。
以下是一个简单的示例用法:
MERGE dbo.DimProduct AS Target
USING (SELECT ProductID, ProductName, ProductColor, ProductCategory FROM dbo.StagingProduct) AS Source
ON (Target.ProductID = Source.ProductID)
WHEN MATCHED THEN
UPDATE SET Target.ProductName = Source.ProductName
WHEN NOT MATCHED BY TARGET THEN
INSERT (ProductID, ProductName, ProductColor, ProductCategory)
VALUES (Source.ProductID, Source.ProductName, Source.ProductColor, Source.ProductCategory)
OUTPUT $action, Inserted.*, Deleted.*;
帮助了我。
答案 1 :(得分:0)
RedGate的SQL Compare产品具有自动化功能。
http://downloads.red-gate.com/HelpPDF/ContinuousIntegrationForDatabasesUsingRedGateSQLTools.pdf
(我与redgate无关。我甚至不喜欢他们的产品,但在这种情况下似乎符合这种情况)