将 Excel 中的修改数据导入数据库 Table

Import modified data in Excel to Database Table

我正在处理导入功能,我有一个 excel 文件,其中包含一些数据,稍后将由用户编辑,我设法通过 SmartXLS 进行导入 excel在 C# 中并将所有数据更新到 SQL 服务器数据库,但是,我所做的是获取 excel 文件中的所有数据并将所有行更新到 SQL Table,这影响性能,我还更新了未编辑的行。

我想问一下,有什么方法可以只获取修改后的单元格,Excel中的行并更新到SQL Table中的相应数据?

var workbook = new WorkBook();
workbook.read(filePath);
var dataTable = workbook.ExportDataTable();

只是一个场景,也许它可以帮助您理解 gordatron 和我在谈论什么:

情况如下: 有一个 Table "Products" 是产品信息的中央存储位置 和一个 table "UpdatedProducts" 结构看起来完全像 "Products" table 但数据 也许不同。考虑以下场景:您在早上将产品 table 出口到 excel。整体 您在 excel table 中删除、添加、更新产品的那一天。在一天结束时你想重新导入你的 excel 数据到 "Products" table。你需要什么:

  • 删除 "UpdatedProducts"
  • 中的所有记录
  • 将数据从 excel 插入到 "UpdatedProducts"(如果可能,批量插入)
  • 更新 "Products" table

那么合并语句可能如下所示:

MERGE Products AS TARGET
USING UpdatedProducts AS SOURCE 
    ON TARGET.ProductID = SOURCE.ProductID
WHEN MATCHED AND TARGET.ProductName <> SOURCE.ProductName OR TARGET.Rate <> SOURCE.Rate 
    THEN UPDATE SET TARGET.ProductName = SOURCE.ProductName, 
                    TARGET.Rate = SOURCE.Rate 
WHEN NOT MATCHED BY TARGET 
    THEN INSERT (ProductID, ProductName, Rate) 
        VALUES (SOURCE.ProductID, SOURCE.ProductName, SOURCE.Rate)
WHEN NOT MATCHED BY SOURCE 
    THEN DELETE

本声明的作用: 匹配时: table 中都存在数据,如果 ProductName 或 Rate 不同

,我们会更新 "Products" 中的数据

当目标不匹配时: 暂存 table 中存在数据,但您的原始 table 中没有数据,我们将它们添加到 "Products"

当来源不匹配时: 数据存在于您的原始 table 但不存在于暂存 table,您将从 "Products"

中删除

非常感谢 http://www.mssqltips.com/sqlservertip/1704/using-merge-in-sql-server-to-insert-update-and-delete-at-the-same-time/ 这个完美的例子!