gpt4 book ai didi

c# - File.ReadAllText OutOfMemoryException 异常

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

我有一个很大的 SQL 脚本(大约 70MB),我需要将它全部读入内存,然后在 GO 语句上拆分。

我正在执行以下操作,但得到了 OutOfMemoryException:

var script = File.ReadAllText(scriptFile);
var scriptName = Path.GetFileName(scriptFile);
var commands = Regex.Split(script, "^GO\r\n", RegexOptions.Multiline | RegexOptions.IgnoreCase);

然后,对于 commands 中的每个脚本片段,我调用 ExecuteNonQuery。在我尝试加载这个大脚本文件之前,一切正常。

对于更有效地解析该文本文件有什么建议吗?

最佳答案

尝试这样的事情

public static IEnumerable<string> SplitScriptOnGo(string scriptPath)
{
var buffer = new StringBuilder();
foreach (var line in File.ReadLines(scriptPath))
{
if (line == "GO")
{
yield return buffer.ToString();
buffer.Clear();
}
else
{
buffer.AppendLine(line);
}
}
}

这将一次读取一行,将它们缓冲到 StringBuilder 中,然后在看到“Go”行时产生缓冲区。只要您不使用 ToList,您就可以迭代结果并执行每个 SQL 语句,而无需将整个脚本读入内存。

关于c# - File.ReadAllText OutOfMemoryException 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36507040/

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