我的申请表有以下程序。
存在产品数据库(20,000行)。
我们的客户端具有导入excel文件的“导入”功能。
这是通过删除所有产品表行,然后执行导入来实现的 - 这是一件很长的事情,因为我们以编程方式对数据执行计算。
显而易见的问题是,如果'import'操作失败(IO stuff),他们现在在products表中没有/ partial / curropt数据。
我们希望如果'import'操作失败,原始数据仍然存在。
这是用C#编写的ASP.NET应用程序,使用SQL Server 2005并使用我们通过VS2005设计工具创建的XSD。
答案 0 :(得分:4)
答案 1 :(得分:1)
我会将数据导入到与product表格结构相同的表格中,然后一旦您对导入成功感到满意就替换产品表格中的数据。
这意味着用户可以在导入过程中继续使用系统,并在更新产品表时最大限度地缩短停机时间。
答案 2 :(得分:1)
使用交易将是明显的选择。
我想我要问的第一件事是你真的需要清理整个桌子吗?是否有时间戳或某些东西可用于限制需要刷新的数据量?您是否可以重新使用逻辑来使用更新而不是所有删除和插入?这样你的交易就会变小。
-Dan
答案 3 :(得分:1)
我会采用上面概述的交易方法。但我能看到的唯一问题是,您可能最终会在导入过程的整个期间锁定整个表。你可能需要考虑一下。单独的表格方法可以是解决方案之一。