我正在处理导入功能,我有一个包含一些数据的excel文件,稍后将由用户编辑,我设法通过C#中的SmartXLS导入excel并将所有数据更新为SQL但是,我所做的就是获取excel文件中的所有数据并将所有行更新到SQL表中,这会影响性能并且我还更新了未编辑的行。
我想问一下,有什么方法可以只修改Excel中的单元格,行并更新到SQL表中的相应数据?
var workbook = new WorkBook();
workbook.read(filePath);
var dataTable = workbook.ExportDataTable();
答案 0 :(得分:1)
只是一个Scenarion,也许它可以帮助你理解gordatron和我在说什么:
以下情况: 表“产品”是产品信息的中心存储位置 和一个表“UpdatedProducts”,其结构看起来与“Products”表完全相同,但数据 也许不同。想想下面的情况:你在早上将产品表导出为excel。整体 您在Excel表格中删除,添加,更新产品的日期。在一天结束时,您想要重新导入您的Excel 数据到“产品”表。你需要什么:
然后Merge-Statement可能如下所示:
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
本声明的作用: 匹配时: 两个表中都存在数据,如果ProductName或Rate不同,我们更新“Products”中的数据
目标不匹配时: 数据存在于临时表中,但不存在于原始表中,我们将它们添加到“产品”
当不符合来源时: 数据存在于原始表中,但不存在于临时表中,您的数据将从“产品”中删除