parsingC#中的Excel工作表,将新值插入到数据库中
我目前正在一个项目parsing一个Excel工作表,并插入任何值到以前没有插入的数据库。 该表包含大约80个用于不同名称的date – 值对,每对平均约有1500行。
每个名称在一周结束时手动input5个date – 值对。 整个周末,我的过程将parsingexcel文件并插入当前不在数据库中的任何值。
我的问题是,鉴于大量的数据和每周增加的小数量,您将如何轻松确定需要插入哪些值? 我已经考虑添加另一个表来存储为每个名称插入的最后date,并采取任何行之后。
最简单的解决scheme,我会把它全部放到一个临时表中,然后在服务器上做比较。 或者,具有适当sorting和查找的SSIS可以确定差异并插入它们。
在使用SQL的数据库中,要比较120000行并不重要,但对数据库的120000个单独调用来validation该行是否在数据库中可能需要一段时间才能在客户端进行。
选项1将创build一个“lastdate”表,在您的周末导入结束时自动加盖。 然后在下一个星期你的程序可以查询该表中的最后一条logging,然后在该date之后才从excel文件读取。 可能是你最好的select。
选项2将在数据中查找唯一字段,并逐行检查数据库中是否存在该键。 如果不存在,则添加它,如果不存在的话。 如果选项1不符合你的期望,这将是我的第二select。
这一切都取决于您的解决scheme需要如何防弹。 如果您信任电子表格将不会以任何方式调整,使得它不一致的用户,比你的解决scheme将罚款。
如果你想保持安全(例如,如果一些旧的值可能会改变),你需要将整个事情与数据库进行比较。 说实话,你在这里谈论的数据量并不是很大,尤其是当你在周末运行的时候。 而且你仍然可以通过为数据库编写“批处理”types的存储过程来进行优化。
感谢所有的答案。
我已经决定,而不是创build一个存储最后date的新表,我将只select每个名称的最大date,然后在该date之后插入值到表中。
这假定在最后date之前的数据保持一致,这对于这个问题应该没问题。
- 从Excel转换方程到C#
- Excel数据透视表:移动行到列的值字段
- 使用Excel Interop和Excel中的Excel中的单元格内容
- 使用c#将excel数据转换为datetime
- 无法在天数小于12时以适当的格式获取date从EXCEL在C#
- 使用C#Interop.Excel删除NamesManager中的重复名称
- 如何导出datagridview单元格格式的值为excel?
- 如何将SQL Server Compact表导出到使用C#的Windows CE中的Excel?
- 当调用AddIns.Item 时,索引无效(从HRESULTexception:0x8002000B(DISP_E_BADINDEX)))