据我所知,使用C#和SQL Server批量插入数据的最佳方法是使用表类型并传入数据表。 我们当前的流程是一次处理/插入一条记录(即使有数千条记录),这样我们就能够成功处理有效记录并报告错误。显然这是一个巨大的性能问题。
有没有办法进行批量插入操作,允许插入有效记录,无效记录失败? 如果是这样,你如何找出哪些记录通过,哪些记录失败或导致错误?
答案 0 :(得分:0)
我认为只有SSIS可以做你所描述的。我过去所做的是使用SQLXML将数据批量加载到SQL Server(https://msdn.microsoft.com/en-us/library/ms171993.aspx)。
基本上我所做的就是:
所以这里的主要I / O包括:有一个读取器流来读取XML和2个写入器流来写入有效和无效的XML文件,最后批量加载有效的XML文件。
性能非常好btw(我可以在不到5分钟的时间内在我的笔记本电脑上批量加载1GB文件,但这可能会因磁盘速度和CPU而异)。内存利用率非常低btw。