gpt4 book ai didi

c# - 从oracle数据库中读取大量数据并使用C#将其导出为.dat文件

转载 作者:太空宇宙 更新时间:2023-11-03 14:09:23 26 4
gpt4 key购买 nike

我们有一个查询将按月执行并返回大小为 1GB 的数据。

此处使用的查询只是一个带内连接的选择查询,不涉及游标。

目前他们正在 Toad 中执行此查询并将数据从输出窗口导出为 .dat 文件。

请注意,使用 Toad 手动执行此操作需要 2 小时。

之后,他们正在更改 .dat 文件中的标题文本,使其具有有意义的名称,以便与我们的客户共享。

我想通过创建一个执行此过程的 exe 来自动执行此过程。

代码快照如下所示

using (OracleConnection conn = new OracleConnection())
{
conn.ConnectionString = ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString;
conn.Open();

using (OracleCommand cmd = new OracleCommand(commandText))
{
cmd.Connection = conn;

using (OracleDataReader dtReader = cmd.ExecuteReader())
{
outputContent = new StringBuilder();

while (dtReader != null && dtReader.Read())
{
for (int i = 0; i < dtReader.FieldCount; i++)
{
outputContent.Append(dtReader[i]);
outputContent.Append(delimiter);
}

outputContent = outputContent.Replace(delimiter, Environment.NewLine, outputContent.Length - 1, 1);
}
}
}
}

outputPath = string.Format(ConfigurationManager.AppSettings["OutputPath"], DateTime.Now.Ticks);
outputStream = new StreamWriter(outputPath, true);

//Export
outputStream.Write(outputContent.ToString());
outputStream.Close();

从日志中得知,execute reader语句在几秒内完成。

但是从 datareader 读取数据抛出“异常消息是 ORA-03113:通信 channel 上的文件结束 在 System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc)” 8 小时后。

谁能告诉我上述方法可以很好地处理 1GB 大小的数据?或

还有其他更好的方法吗?

谢谢,伽耶斯丽

最佳答案

也许你可以试试

CommandBehavior = SequentialAccess

来自 MSDN

Use SequentialAccess to retrieve large values and binary data

A sample如何使用它

关于c# - 从oracle数据库中读取大量数据并使用C#将其导出为.dat文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8293294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com