使用C#列出Oracle超过1000万条记录

sin*_*ici 8 c# oracle performance

我有一个包含超过1亿条记录的数据库.我正在运行包含超过1000万条记录的查询.这个过程需要花费太多时间,所以我需要缩短这个时间.我想将获得的记录列表保存为csv文件.我怎样才能尽可能快速和最佳地完成?期待你的建议.谢谢.

Mar*_*ell 11

我假设您的查询已经被约束到您需要的行/列,并且很好地利用了索引.

在这种规模上,唯一关键的是你不要试图将它全部加载到内存中; 所以忘掉像DataTable大多数全脂ORM(通常尝试将行与身份管理器和/或变更管理器关联).你将不得不为使用原始IDataReader(从DbCommand.ExecuteReader),或建立在一个非缓冲迭代任何API 顶部的是(有几个,我对短小精悍的偏见).出于编写CSV的目的,原始数据读取器可能没问题.

除此之外:由于带宽受限,你无法让它变得更快.您可以更快地获得它的唯一方法是在数据库服务器上创建CSV文件,这样就不会有网络开销.


seh*_*ehe 5

你需要在C#中做到这一点的机会相当渺茫.这是批量数据加载/导出的领域(通常用于数据仓库方案).

许多(免费)工具(我想象甚至是Quest Software的Toad)将比在任何平台上编写它更加强大和高效.

我有一种预感,你实际上并不需要这个最终用户(简单的观察是,部门秘书实际上不需要邮寄出那些副本;它太大而不能以这种方式使用).

我建议使用正确的工具.无论你做什么,

  • 不要滚动自己的数据类型转换
  • 使用带引号文字的CSV,并考虑转义这些中的双引号
  • 想想区域选项(IOW:总是使用InvariantCulture进行导出/导入!)

  • 我变得更加谦虚了。如果我要重写该评论,我觉得没有必要说得那么直白。为后代保留它,​​以便我们可以看到人们学习。 (2认同)