这是导出50列的500万条记录的最佳方法.数据读取器或BCP
本文关键字:数据 方法 读取 BCP 最佳 50列 500万 记录 | 更新日期: 2023-09-27 17:54:34
当前用于数据导出的程序不期望大小,它使用实体框架并将IQueryable转换为用于导出的列表。操作时内存16gb不足。
我读到有两个选项可以避免这种情况,比如DataReader迭代和BCP。然而,我不确定2点。
- 在这种情况下,BCP会导致内存问题吗?
- 数据阅读器会比BCP慢吗?
谁能告诉我。
方法一:
如果你在结果中没有任何大的BLOB数据,你想要导出,我肯定会用DataReader (@TrevorAsh在评论中指出)。你可以用它来批量复制数据,这将解决你的内存问题。
所以一旦你开始阅读,你可以直接存储结果,也可以批量存储你选择的大小。如果速度不够快,你可以将结果分成多个集合,并在多个线程中读取它们,但这真的取决于你的场景…
方法2:
另一种方法是在SQL Server上将源数据分区为多个文件组/文件,然后进行备份;只复制MDF文件备份,其中包含您的数据