【问题标题】:How to retrieve large data from Oracle database using C#?如何使用 C# 从 Oracle 数据库中检索大数据?
【发布时间】:2011-01-10 21:02:02
【问题描述】:

我正在尝试从 .NET 中的 Oracle 数据库中检索大量数据。 我正在使用 .NET DBDataReader,它适用于少量数据,但当数据变为中等或大时,它会停止运行,我不知道为什么。 如何检索大量数据?

【问题讨论】:

  • 它停止运行不是软件开发人员应该在他的词汇表中使用的问题描述。这类短语更适合不知道或不关心计算机如何工作的用户。软件开发人员应该通过显示他的代码来解释他正在尝试做什么,到目前为止他已经尝试了什么,解释预期的结果,实际结果以及它们之间的差异。如果出现异常,他应该发布完整的异常详细信息等......我想你明白了。
  • 你使用 System.Data.OracleClient 还是 Oracle.DataAccess.Client?
  • @Darin - 这个评论实际上比一记耳光更厉害!
  • @Pabuc,我只是询问细节,因为我没有心灵感应技能来读懂别人的想法,并试图解释如果希望得到有用的答案,应该如何在这里提问。
  • 是的,我确实使用 System.Data.OracleClient

标签: c# .net database oracle


【解决方案1】:

您应该尝试使用ODP.NET。那是为 .NET 编写的 Oracle 数据提供程序,它针对与 Oracle 数据库的通信进行了更好的优化。

Microsoft 已弃用 Oracle 客户端 (System.Data.OracleClient) (http://blogs.msdn.com/adonet/archive/2009/06/15/system-data-oracleclient-update.aspx) 并建议使用第三手工具。

已编辑:

你应该看看这个类似的问题和答案:Big Performance Problems With Oracle DataReader in .Net

【讨论】:

  • 谢谢你的回答,但你能给我一个可靠的信息来源吗?这是我必须在短时间内完成的一项关键任务:)
  • 您认为“中等或大量”的量是多少?我们在说什么数量?
  • @Mohamed 如果您希望得到有用的答案,您可以显示您的代码和您收到的确切异常消息。
  • 超过 20 条记录被视为中等。
  • 它只是返回空无异常消息
【解决方案2】:

好的,由于您期望得到与您的问题相关的答案且信息很少,因此回答这些问题将有助于其他人回答您的问题:

1- 你在数据库中的数据类型是什么

2- 你是如何尝试获取数据的(一些代码会很有帮助)

3- 是否有任何索引,表有多大,查询有多复杂,您是否尝试过优化它?尝试编写您的查询。

...


好的,如果它改变了什么,你可以尝试告诉我们...

static void DownloadBlob(OracleConnection myConnection)
{
  OracleCommand myCommand = new OracleCommand("SELECT * FROM table", myConnection);
  myConnection.Open();
  OracleDataReader myReader = myCommand.ExecuteReader(System.Data.CommandBehavior.Default);
  try
  {
    while (myReader.Read())
    {
      //Obtain OracleLob directly from OracleDataReader
      OracleLob myLob = myReader.GetOracleLob(myReader.GetOrdinal("Ordinal"));
      if (!myLob.IsNull)
      {
        // I hope it is BLOB :)
      }
    }
  }
  finally
  {
    myReader.Close();
    myConnection.Close();
  }
}

【讨论】:

  • 数据类型为文本和二进制数据。
  • 我希望我可以放一些代码,但我的公司阻止我这样做。我只能说我真的很抱歉。该表非常大,超过 1000 条记录我的查询是直接从 oracle 数据库中选择的。
  • 您是否尝试过直接从 oracle 运行 sql 查询?你仍然得到0结果吗?你不应该,如果你有大量数据,它应该需要很长时间才能执行。如果它在 oracle 中执行良好但在 .net 中运行缓慢,那将对其他人有所帮助..
  • 当我在 oracle 中运行它时,它会显示结果。我只是在想,但如果我检索 xml 文件中的数据会更好吗?有可能吗?
  • @Mohamed:添加另一种技术,尤其是已知会损害性能的技术,并不是一个好主意。
猜你喜欢
  • 2016-01-29
  • 1970-01-01
  • 2017-08-29
  • 1970-01-01
  • 2021-12-31
  • 2019-05-30
  • 2020-08-03
  • 1970-01-01
  • 2010-11-23
相关资源
最近更新 更多