从Excel数据更新SQL Server表

从Excel数据更新SQL Server表,sql,sql-server,excel,Sql,Sql Server,Excel,目前,我正在尝试将Excel 2007工作簿中的数据导入SQL Server 2008 R2表“test” 导入工作非常完美,但是工作簿上的数据会不断更改,需要每十分钟左右导入一次 当我重新运行导入时,SQL Server只会复制所有数据,并最终得到相同的副本-我如何进行导入,使其仅为旧数据添加新列和UPDATEchanged列 我尝试导入到另一个表,并仅复制新数据(不是我需要的,也不起作用) 此外,以下内容似乎很有希望,但是,不确定它是否能满足我的要求 --Update existing, a

目前,我正在尝试将Excel 2007工作簿中的数据导入SQL Server 2008 R2表“test”

导入工作非常完美,但是工作簿上的数据会不断更改,需要每十分钟左右导入一次

当我重新运行导入时,SQL Server只会复制所有数据,并最终得到相同的副本-我如何进行导入,使其仅为旧数据添加新列和
UPDATE
changed列

我尝试导入到另一个表,并仅复制新数据(不是我需要的,也不起作用)

此外,以下内容似乎很有希望,但是,不确定它是否能满足我的要求

--Update existing, add missing
MERGE INTO dbo.tbl_Customers AS C
USING dbo.tbl_CustomersTemp AS CT ON C.CustID = CT.CustID

WHEN MATCHED THEN
     UPDATE 
        SET
          C.CompanyName = CT.CompanyName,
          C.Phone = CT.Phone

WHEN NOT MATCHED THEN 
     INSERT (CustID, CompanyName, Phone)
     VALUES (CT.CustID, CT.CompanyName, CT.Phone)
任何与此相关的帮助都将不胜感激-如果我错过了什么,请告诉我


谢谢

MERGE可用于更新现有的和添加新的。你试过了吗?我试过了,但我知道SQL的基本知识,不确定是否有正确的语法或命令来满足我的要求。在我看来,你走上了正确的道路。此查询与您的描述匹配。您可以使用一把或多个记录来测试它。一旦你确信你可以扩展。我现在已经设法让它工作:)我唯一剩下的问题是从Excel导入时,它会将数据添加到虚拟表中,然后当我运行脚本进行合并时,它会抛出以下错误:Msg 8672,级别16,状态1,第1行MERGE语句多次尝试更新或删除同一行。当目标行与多个源行匹配时,会发生这种情况。MERGE语句不能多次更新/删除目标表的同一行。优化ON子句以确保目标行最多匹配一个源行,或使用GROUP BY子句对源行进行分组。
MERGE INTO dbo.test AS C
USING (SELECT TOP 1 [A], [B], [C], [D], [E], [F], [G], [H], [I] FROM dbo.test_import) AS CT 

ON C.[A] = CT.[A]

WHEN MATCHED THEN
  UPDATE 
     SET
       C.[B] = CT.[B],
       C.[C] = CT.[C],
       C.[D] = CT.[D],
       C.[E] = CT.[E],
       C.[F] = CT.[F],
       C.[G] = CT.[G],
       C.[H] = CT.[H],
       C.[I] = CT.[I]     

WHEN NOT MATCHED THEN 
    INSERT ([A], [B], [C], [D], [E], [F], [G], [H], [I])
    VALUES (CT.[A], CT.[B], CT.[C], CT.[D], CT.[E], CT.[F], CT.[G], CT.[H], CT.[I]);