Erlang如何打开达到2G上限的dets文件

打开一个达到2G上限的dets文件,结果如下:

1> dets:open_file("task_info_base.DAT.bak0619").
dets: file "task_info_base.DAT.bak0619" not properly closed, repairing ...
{error,{no_more_space_on_file,"task_info_base.DAT.bak0619.TMP"}}

找遍了全网也没有找到解决方法,经过自己摸索,找到了一个不是特别完美的解决方案,但是能挽救大部分数据。

解决方案:截取dets文件前面大部分的数据,放弃之后的数据。
head -c 1800000000 task_info_base.DAT.bak0619 > head_1.8g_output

前1.8G数据导入的文件,可以正常打开:

2> {ok,F} = dets:open_file("head_1.8g_output").
dets: file "head_1.8g_output" not properly closed, repairing ...
{ok,#Ref<0.0.1.4531>}

3> catch dets:info(F).                         
[{type,set},
 {keypos,2},
 {size,475024},
 {file_size,1797010920},
 {filename,"head_1.8g_output"}]

经测试,如果取前面1900000000字节数据,打开则返回{error,{no_more_space_on_file,“head_output.TMP”}},具体的界限是多少,可自行尝试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值