> Erlang中文手册 > to_dets/2 把内存里的 ETS 数据插入到磁盘上保存

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