2013-03-27 64 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。我的猜測是你已經看過這個。

如果您將表格直接保存爲磁盤作爲展開的表格,則可以在每一列中讀取並單獨寫出。然後從內存中刪除列,然後再轉到下一個。