2013-03-27 45 views
3

我需要读取包含交易数据的大文件(大约20G),并且我想知道是否有一个很好的方法来读取文件而不会消除内存。Q/kdb +读取巨大的文本文件

我现在的方法是通过列加载文件,并加入这些列在一起:

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

这种方法的问题是,虽然它是相当快的,它使用的内存大块,我想以改善其内存使用情况。

我也曾尝试使用.Q.fs,但它需要3个多小时将文件加载...

有没有办法不消耗吨的内存有效做到这一点?

感谢

回答

4

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

2

你需要保持桌面在内存或者这是一个中间步骤编写表磁盘?

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

您可以按照步骤here显示如何处理大型文件,尽管所有这些文件都使用.Q.fs。我的猜测是你已经看过这个。

如果您将表格直接保存为磁盘作为展开的表格,则可以在每一列中读取并单独写出。然后从内存中删除列,然后再转到下一个。