【发布时间】:2013-07-25 23:09:16
【问题描述】:
我正在开发一个应用程序,它从巨大的文本文件 (~2.5 GB) 中读取行,将每一行处理为特定格式,然后将每一行写入一个文本文件。关闭输出文本文件后,程序“批量插入”(SQL Server)将数据插入我的数据库。它有效,只是速度很慢。
我正在使用StreamReader 和StreamWriter。
由于我必须处理文本,我几乎只能一次读一行;但是,我认为如果我制作一个行集合并每隔 1000 行左右写出一个集合,它至少会加快速度。问题是(这可能纯粹是由于我的无知)我无法使用StreamWriter 编写string[]。在探索 StackOverflow 和互联网的其余部分后,我遇到了 File.WriteAllLines,它允许我将 string[]s 写入文件,但我认为我的计算机内存无法处理 2.5 GB 的数据一次存储。此外,该文件已创建、填充和关闭,因此我必须制作大量较小的文件来分解 2 GB 的文本文件,然后才能将它们插入数据库。所以我宁愿远离那个选项。
我能想到的一个 hack 工作是创建一个 StringBuilder 并使用 AppendLine 方法添加每一行以创建一个巨大的字符串。然后我可以将 StringBuilder 转换为字符串并将其写入文件。
但我的猜测已经足够了。我已经实现的方法有效,但我想知道是否有人可以提出一种将数据块写入文件的更好方法?
【问题讨论】:
标签: c# performance optimization