这是2014年,是否有一种插入大量数据行的优雅方式呢?

时间:2014-01-23 09:59:57

标签: c# asp.net sql entity-framework ado.net

我从第三方的Web服务接收大量数据并将其摄取到我们的数据库中。

数据量将代表100,000s行,将在每天运行并在插入/合并到我的sql db之前需要在应用程序服务器上进行处理。我想到了大量插入的一些选择。

  1. 实体框架 - 花费的时间太长,因为它似乎一次只发送一个插入命令!
  2. StringBuilder和SqlCommand - 听起来更好
  3. 将我想插入的对象列表的XML序列化发送到使用nodes()的存储过程,以获取INSERT / MERGE的所有值。
  4. 我总是喜欢3号并且多次使用它但它仍然看起来很不愉快,而且在internetz上似乎不太清楚,所以想知道是否有其他人能解决这个问题的新方法或标准方法。 / p>

    我使用.NET堆栈btw。

2 个答案:

答案 0 :(得分:1)

您可以在sqlServer 2008及更高版本中使用Table Valued parameters进行批量插入;

答案 1 :(得分:1)

我最近一直在看这个。我最初使用SqlBulkCopy将它全部存储在DataTable中并以这种方式发送它。

问题在于接收表需要为空,因此内存密集。

我最后使用了表值参数(SQL 2008)。