这是导出50列的500万条记录的最佳方法.数据读取器或BCP

本文关键字:数据 方法 读取 BCP 最佳 50列 500万 记录 | 更新日期: 2023-09-27 17:54:34

当前用于数据导出的程序不期望大小,它使用实体框架并将IQueryable转换为用于导出的列表。操作时内存16gb不足。

我读到有两个选项可以避免这种情况,比如DataReader迭代和BCP。然而,我不确定2点。

  1. 在这种情况下,BCP会导致内存问题吗?
  2. 数据阅读器会比BCP慢吗?

谁能告诉我。

这是导出50列的500万条记录的最佳方法.数据读取器或BCP

方法一:

如果你在结果中没有任何大的BLOB数据,你想要导出,我肯定会用DataReader (@TrevorAsh在评论中指出)。你可以用它来批量复制数据,这将解决你的内存问题。

所以一旦你开始阅读,你可以直接存储结果,也可以批量存储你选择的大小。如果速度不够快,你可以将结果分成多个集合,并在多个线程中读取它们,但这真的取决于你的场景…

方法2:

另一种方法是在SQL Server上将源数据分区为多个文件组/文件,然后进行备份;只复制MDF文件备份,其中包含您的数据