Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
解析C#中的excel工作表,将新值插入数据库_C#_Sql_Sql Server_Excel - Fatal编程技术网

解析C#中的excel工作表,将新值插入数据库

解析C#中的excel工作表,将新值插入数据库,c#,sql,sql-server,excel,C#,Sql,Sql Server,Excel,我目前正在进行一个项目,以解析excel工作表,并将以前未插入的任何值插入数据库。该表包含大约80个不同名称的日期-值对,平均每对约1500行 每个名称都有5个日期-值对,在周末手动输入。在周末,我的进程将解析excel文件并插入数据库中当前不存在的任何值 我的问题是,考虑到大量的总数据和每周添加的少量数据,您如何轻松确定需要插入哪些值?我考虑过添加另一个表来存储为每个名称插入的最后一个日期,并在该日期之后提取任何行。最简单的解决方案是,将所有数据都放入一个暂存表中,并在服务器中进行比较。或者,

我目前正在进行一个项目,以解析excel工作表,并将以前未插入的任何值插入数据库。该表包含大约80个不同名称的日期-值对,平均每对约1500行

每个名称都有5个日期-值对,在周末手动输入。在周末,我的进程将解析excel文件并插入数据库中当前不存在的任何值


我的问题是,考虑到大量的总数据和每周添加的少量数据,您如何轻松确定需要插入哪些值?我考虑过添加另一个表来存储为每个名称插入的最后一个日期,并在该日期之后提取任何行。

最简单的解决方案是,将所有数据都放入一个暂存表中,并在服务器中进行比较。或者,具有适当排序和查找的SSI可以确定差异并将其插入


使用SQL在数据库中比较120000行并不重要,但是在客户端对数据库进行120000次单独调用以验证该行是否在数据库中可能需要一段时间。

最简单的解决方案是,我会将所有行都放在一个暂存表中,并在服务器中进行比较。或者,具有适当排序和查找的SSI可以确定差异并将其插入


使用SQL在数据库中比较120000行并不重要,但是在客户端对数据库进行120000次单独调用以验证该行是否在数据库中可能需要一段时间。

选项1是创建一个“lastdate”表,该表在周末导入结束时自动标记。接下来的一周,您的程序可以查询该表中的最后一条记录,然后仅从该日期之后的excel文件中读取。可能是你最好的选择


选项2是在数据中查找唯一字段,并逐行检查数据库中是否存在该键。如果它不存在,你就添加它,如果它存在,你就不会添加它。这将是我的第二个选择,如果选项1没有像你期望的那样工作

选项1是创建一个“lastdate”表,该表在周末导入结束时自动加盖戳记。接下来的一周,您的程序可以查询该表中的最后一条记录,然后仅从该日期之后的excel文件中读取。可能是你最好的选择


选项2是在数据中查找唯一字段,并逐行检查数据库中是否存在该键。如果它不存在,你就添加它,如果它存在,你就不会添加它。这将是我的第二个选择,如果选项1没有像你期望的那样工作

这完全取决于您的解决方案需要的防弹性能。如果您相信用户不会以任何方式调整电子表格,从而使其不一致,那么您的解决方案就可以了


如果希望安全起见(例如,如果某些旧值可能会发生更改),则需要将整个内容与数据库进行比较。老实说,您在这里谈论的数据量似乎不是很大,尤其是当您的进程将在周末运行时。您仍然可以通过为数据库编写“批处理”类型的存储过程来进行优化。

这取决于解决方案的防弹性能。如果您相信用户不会以任何方式调整电子表格,从而使其不一致,那么您的解决方案就可以了


如果希望安全起见(例如,如果某些旧值可能会发生更改),则需要将整个内容与数据库进行比较。老实说,您在这里谈论的数据量似乎不是很大,尤其是当您的进程将在周末运行时。您仍然可以通过为数据库编写“批处理”类型的存储过程来进行优化。

感谢所有答案

我已经决定,不再创建一个存储最后日期的新表,而是为每个名称选择最大日期,然后在表中插入该日期之后的值


这假设在最后一个日期之前的数据保持一致,这对于这个问题来说应该没问题。

谢谢所有的答案

我已经决定,不再创建一个存储最后日期的新表,而是为每个名称选择最大日期,然后在表中插入该日期之后的值


这假设最后日期之前的数据保持一致,对于这个问题,哪种方法应该可以。

请在excel工作表和目标表结构中显示一些数据?一些数据示例会很有帮助。是否有在本网站上显示电子表格的好方法?请在excel工作表和目标表结构中显示一些数据?一些数据示例会很有帮助。是否有显示电子表格的好方法在这个网站上?