2

我需要读取一个包含交易数据的大文件(大约 20G),我想知道是否有一种很好的方法可以在不杀死内存的情况下读取文件。

我当前的方法是按列加载文件并将这些列连接在一起:

columnA:(" S "; 10 20 30)0:`filepath

这种方法的问题是,虽然速度很快,但它使用了大量的内存,我想提高它的内存使用率。

我也试过用.Q.fs,但是加载文件需要3个多小时...

有没有办法在不消耗大量内存的情况下有效地做到这一点?

谢谢

4

2 回答 2

3

.Q.fsn是一个版本.Q.fs,允许指定以字节为单位读取的块的大小,.Q.fs使用默认大小131000。您可以增加块大小以加快速度。.Q.fsn接受三个参数,前两个与.Q.fs最后一个是大小相同。

于 2013-03-28T11:46:50.157 回答
1

您是否需要将表保存在内存中,或者这是将表写入磁盘的中间步骤?

如果您想将表格保存在内存中,听起来您没有足够的 RAM。无论您是阅读每个单独的列,然后使用 加入或流式传输表.Q.fs,我怀疑总内存占用量将是相似的。

您可以按照此处显示如何处理大文件的步骤进行操作,尽管所有这些都使用.Q.fs. 我猜你已经看过这个了。

如果您将表格作为张开表格直接保存到磁盘,您可以读取每一列,然后单独写出。然后从内存中删除该列,然后再继续下一个。

于 2013-03-27T14:35:52.677 回答