我正在尝试将一个非常大的数据库(数 GB)转储到 XML。我正在使用 Linq-to-SQL 从数据库中获取数据,并使用 Linq-to-XML 生成 XML。我正在使用 XStreamingElement
来保持低内存使用率。然而,在没有编写任何 XML 的情况下,该作业仍会分配所有可用内存。结构如下所示:
var foo =
new XStreamingElement("contracts",
<LinqtoSQL which fetches data>.Select(d =>
new XElement("contract",
... generate attributes etc...
using (StreamWriter sw = new StreamWriter("contracts.xml"))
{
using (XmlWriter xw = XmlWriter.Create(sw))
{
foo.WriteTo(xw);
}
}
我也试过用以下方式保存:
foo.Save("contracts.xml", SaveOptions.DisableFormatting);
...无济于事。
有什么线索吗?
最佳答案
数据有多复杂?我对 XStreamingElement
不是很熟悉,但我想知道您是否会更喜欢直接使用 XmlWriter
?特别是对于循环中的like数据,使用起来非常方便。
但是,我担心将 xml 作为此数据的选择。这是要求吗?或者只是一种方便的可用格式?特别是,可能很难方便地解析那么大的 xml,因为您必须使用 XmlReader
(这比 XmlWriter
)。
如果您可以使用其他格式,我会建议您...有一些想法,但除非您提到您有兴趣,否则我不会喋喋不休。
关于c# - 使用 Linq-to-XML 和 Linq-to-SQL 生成非常大的 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1697261/