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).