我需要读取一个包含交易数据的大文件(大约20G),我想知道是否有一个很好的方法来读取文件而不会丢失内存。
我当前的方法是按列加载文件并将这些列连接在一起:
columnA:(" S "; 10 20 30)0:`filepath
这种方法的问题在于它虽然速度非常快,但却占用了大量的内存,我想提高其内存使用率。
我也试过使用.Q.fs,但加载文件需要3个多小时......
有没有办法在不消耗大量内存的情况下有效地做到这一点?
由于
答案 0 :(得分:3)
.Q.fsn
是.Q.fs
的一个版本,允许指定以字节为单位读取的块的大小,.Q.fs
使用默认大小131000
。你可以增加块大小,这将加快速度。 .Q.fsn
有三个参数,前两个与.Q.fs
相同,最后一个是大小。
答案 1 :(得分:1)
您是否需要将表保留在内存中,或者这是将表写入磁盘的中间步骤?
如果你想将表保存在内存中,听起来你的RAM没有足够的。无论您是读取每个列,然后使用.Q.fs
加入或流式传输表,我都怀疑总内存占用量是相似的。
您可以按照显示如何处理大型文件的步骤here进行操作,但所有这些步骤都使用.Q.fs
。我的猜测是你已经看过这个了。
如果要将表作为显示表直接保存到磁盘,则可以读取每列,然后单独写出。然后从内存中删除该列,然后再转到下一个列。