Erlang中文手册(Erldoc.com)  »  ets  »  to_dets/2
Erlang并发编程 Erlang/OTP设计原理 Erlang/OTP[pdf] Mnesia用户手册[pdf] Erlang完整手册[en] 官网手册[en] 模块列表 方法列表 随机 Erlang中文社区(BBS) 美女图库

ets:to_dets/2

把内存里的 ETS 数据插入到磁盘上保存

用法:

to_dets(Tab, DetsTab) -> DetsTab

内部实现:

-spec to_dets(Tab, DetsTab) -> DetsTab when
      Tab :: tab(),
      DetsTab :: dets:tab_name().

to_dets(EtsTable, DetsTable) ->
    case (catch dets:from_ets(DetsTable, EtsTable)) of
	{error, Reason} ->
	    erlang:error(Reason, [EtsTable,DetsTable]);
	{'EXIT', {Reason1, _Stack1}} ->
	    erlang:error(Reason1,[EtsTable,DetsTable]);
	{'EXIT', EReason} ->
	    erlang:error(EReason,[EtsTable,DetsTable]);
	ok ->
	    DetsTable;
	Unexpected -> %% Dets bug?
	    erlang:error(Unexpected,[EtsTable,DetsTable])
    end.

把一个已打开的 ETS 表 Tab 里的对象数据插入到一个已创建或已打开的磁盘 ETS(Disk Erlang Term Storage)表 Dets。表 Dets 里的数据在对象数据插入前会被清空。

Tab = test_ets_to_dets,
Ets = ets:new(Tab, [{keypos, 1}, ordered_set]),
[ ets:insert(Ets, {N}) || N <- lists:seq(1, 10) ],
{ok, Tab} = dets:open_file(Tab, [{file, atom_to_list(Tab) ++ ".data"}]),
Tab = ets:to_dets(Ets, Tab),
dets:close(Tab).
阿里云 - 最高1000元通用代金券立即可用
沪ICP备13037221号-9