【发布时间】:2021-09-17 01:43:45
【问题描述】:
我有 6 GB 的文本文件。我想读取这个文件并解析每一行的数据并将其保存在我的数据库中。但由于内存问题,不可能一次处理整个 6 GB 文件。那么如何逐块读取数据然后进行处理呢?
【问题讨论】:
标签: string file parsing erlang
我有 6 GB 的文本文件。我想读取这个文件并解析每一行的数据并将其保存在我的数据库中。但由于内存问题,不可能一次处理整个 6 GB 文件。那么如何逐块读取数据然后进行处理呢?
【问题讨论】:
标签: string file parsing erlang
类似这样的:
process_file(Filename) ->
{ok, F} = file:open(Filename, [read]),
process_lines(F).
process_lines(F) ->
case file:read_line(F) of
{ok, Line} ->
%% do something with Line
process_lines(F);
eof ->
file:close(F)
end.
【讨论】:
eheap_alloc: Cannot allocate 105746219880 bytes of memory (of type "heap_frag")
也许你可以试试read 功能。它允许一个参数来限制文件中的字节数或字符数。
【讨论】: