Sql 如何使用大量数据、可能的密钥冲突和错误列表返回执行令人讨厌的插入/更新
我正在为这个复杂的操作寻找一种策略。Sql 如何使用大量数据、可能的密钥冲突和错误列表返回执行令人讨厌的插入/更新,sql,sql-server,Sql,Sql Server,我正在为这个复杂的操作寻找一种策略。 我们曾经有一个使用NHibernate的解决方案,它可以处理少量的数据,但是现在它太慢了 客户端将带有卡ID的文件上载到系统中,该文件最多可包含分配给客户组的150+k卡ID 一条记录要么被插入,要么状态改变。 表 +++++++++++++++++++++++++++++++++++ |card_id* | card_group_id* |state | | 11112 | meow | 0 | | 11131
我们曾经有一个使用NHibernate的解决方案,它可以处理少量的数据,但是现在它太慢了 客户端将带有卡ID的文件上载到系统中,该文件最多可包含分配给客户组的150+k卡ID 一条记录要么被插入,要么状态改变。
表
+++++++++++++++++++++++++++++++++++
|card_id* | card_group_id* |state |
| 11112 | meow | 0 |
| 11131 | meow | 1 |
+++++++++++++++++++++++++++++++++++
某些ID可能违反PK/三个FK中的一个,这些ID应返回给客户端
所以我基本上需要执行一次一次的插入,“它工作了吗?好的。如果没有,添加到失败的ID列表。”
你能给我一个实现这一目标的策略吗?
I无法容忍数据丢失就像一个坏ID在同一条语句中又失败了1000次操作一样,它需要稍微快一点,这样客户端就不会在等待结果通知时饿死
后端基于ASP.NET,数据库位于SQL Server 2012中。请使用正确的工具执行此作业。在本例中是SSI,并且可能是。从两个源(一个是表,另一个是文件)创建一个合并,然后获取两个输出,插入不匹配的,并插入匹配的错误。SSIS将为您提供批处理、大容量插入、输入文件解析等更多功能 不要试图在纯SQL中实现这一点,处理150k输入记录绝非易事,最终您将编写一个一次性应用程序,而不是使用现成的组件。将数据保存到,然后使用一个 问题:
- 又快又脏
- 光标性能